mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 19:27:45 +00:00
LibC: Mark atexit() entries as 'called' before calling them
This guards as from recursing into an atexit callback if exit() is called from within it.
This commit is contained in:
parent
deda7c8995
commit
9eaa6527f7
1 changed files with 1 additions and 1 deletions
|
@ -101,10 +101,10 @@ void __cxa_finalize(void* dso_handle)
|
||||||
bool needs_calling = !exit_entry.has_been_called && (!dso_handle || dso_handle == exit_entry.dso_handle);
|
bool needs_calling = !exit_entry.has_been_called && (!dso_handle || dso_handle == exit_entry.dso_handle);
|
||||||
if (needs_calling) {
|
if (needs_calling) {
|
||||||
dbgln_if(GLOBAL_DTORS_DEBUG, "__cxa_finalize: calling entry[{}] {:p}({:p}) dso: {:p}", entry_index, exit_entry.method, exit_entry.parameter, exit_entry.dso_handle);
|
dbgln_if(GLOBAL_DTORS_DEBUG, "__cxa_finalize: calling entry[{}] {:p}({:p}) dso: {:p}", entry_index, exit_entry.method, exit_entry.parameter, exit_entry.dso_handle);
|
||||||
exit_entry.method(exit_entry.parameter);
|
|
||||||
unlock_atexit_handlers();
|
unlock_atexit_handlers();
|
||||||
exit_entry.has_been_called = true;
|
exit_entry.has_been_called = true;
|
||||||
lock_atexit_handlers();
|
lock_atexit_handlers();
|
||||||
|
exit_entry.method(exit_entry.parameter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue