[PATCH 2/2] ntdll: Fix nested exceptions on arm64

Martin Storsjo martin at martin.st
Tue Oct 6 03:49:43 CDT 2020


This mirrors ae07938ba661dc0515673835878710a25c99eec8 (from x86_64)
to arm64.

Signed-off-by: Martin Storsjo <martin at martin.st>
---
With this in place, all tests from
https://github.com/microsoft/compiler-tests/tree/master/seh
pass on arm64.
---
 dlls/ntdll/signal_arm64.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c
index cc620eb1b46..c31eb510382 100644
--- a/dlls/ntdll/signal_arm64.c
+++ b/dlls/ntdll/signal_arm64.c
@@ -315,10 +315,10 @@ static DWORD call_teb_unwind_handler( EXCEPTION_RECORD *rec, DISPATCHER_CONTEXT
 static DWORD __cdecl nested_exception_handler( EXCEPTION_RECORD *rec, EXCEPTION_REGISTRATION_RECORD *frame,
                                                CONTEXT *context, EXCEPTION_REGISTRATION_RECORD **dispatcher )
 {
-    if (rec->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND)) return ExceptionContinueSearch;
+    if (!(rec->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND)))
+        rec->ExceptionFlags |= EH_NESTED_CALL;
 
-    /* FIXME */
-    return ExceptionNestedException;
+    return ExceptionContinueSearch;
 }
 
 
-- 
2.17.1




More information about the wine-devel mailing list