diff --git a/asm/error.c b/asm/error.c index 77f498389..f4882d858 100644 --- a/asm/error.c +++ b/asm/error.c @@ -214,10 +214,18 @@ bool set_warning_status(const char *value) warning_state[i] |= mask; break; case WID_RESET: + { + uint8_t old; + if (warning_state_init) + old = warning_state_init->state[i]; + else + old = warning_default[i]; + warning_state[i] &= ~mask; - warning_state[i] |= warning_state_init->state[i] & mask; + warning_state[i] |= old & mask; break; } + } } if (!ok && value) {