在 2025-12-26 07:33, Pali Rohár 写道:
Both handlers are now same, just have different format of input parameters and output return value. This removes code duplicity. --- mingw-w64-crt/crt/crt_handler.c | 100 +++++--------------------------- 1 file changed, 13 insertions(+), 87 deletions(-)diff --git a/mingw-w64-crt/crt/crt_handler.c b/mingw-w64-crt/crt/crt_handler.c index e57d22ccb24c..6dc04f7217d2 100644 --- a/mingw-w64-crt/crt/crt_handler.c +++ b/mingw-w64-crt/crt/crt_handler.c @@ -185,96 +185,22 @@ _gnu_exception_handler (EXCEPTION_POINTERS *exception_data); long CALLBACK _gnu_exception_handler (EXCEPTION_POINTERS *exception_data) { - void (*old_handler) (int); - long action = EXCEPTION_CONTINUE_SEARCH; - int reset_fpu = 0; - -#ifdef __SEH__ - if ((exception_data->ExceptionRecord->ExceptionCode & 0x20ffffff) == GCC_MAGIC) + EXCEPTION_DISPOSITION action = __mingw_SEH_error_handler (exception_data->ExceptionRecord, + NULL /* EstablisherFrame is unavailable */, + exception_data->ContextRecord, + NULL /* DispatcherContext is unavailable */);
Is this a good thing to do? I think that one should not pass a null pointer for `EstablisherFrame`, even if it's known that `__mingw_SEH_error_handler()` doesn't use this parameter.
So this probably should be the other way around -- to call `_gnu_exception_handler()` in `__mingw_SEH_error_handler()`.
-- Best regards, LIU Hao
OpenPGP_signature.asc
Description: OpenPGP digital signature
_______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
