mirror of https://github.com/YosysHQ/yosys.git
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:
parent
b05b98521c
commit
5e439b6e3f
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue