Fix double-free on unmatched logger error pattern

When an expected logger error pattern is unmatched, the logger raises
another (hidden) error. Because of the previous ordering of actions,
`logv_error_with_prefix()` would inadvertently invoke `yosys_atexit()`
twice, causing a double-free.
This commit is contained in:
Zachary Snow 2021-02-23 20:39:13 -05:00
parent b05b98521c
commit 5e439b6e3f
1 changed files with 3 additions and 3 deletions

View File

@ -345,9 +345,6 @@ static void logv_error_with_prefix(const char *prefix,
log_make_debug = bak_log_make_debug;
if (log_error_atexit)
log_error_atexit();
for (auto &item : log_expect_error)
if (YS_REGEX_NS::regex_search(log_last_error, item.second.pattern))
item.second.current_count++;
@ -355,6 +352,9 @@ static void logv_error_with_prefix(const char *prefix,
if (check_expected_logs)
log_check_expected();
if (log_error_atexit)
log_error_atexit();
YS_DEBUGTRAP_IF_DEBUGGING;
#ifdef EMSCRIPTEN