8 _global_unwind2(PEXCEPTION_REGISTRATION RegistrationFrame
)
11 RtlUnwind(RegistrationFrame
, &&__ret_label
, NULL
, 0);
13 // return is important
20 // This is dragged over from WINE:
22 typedef struct __EXCEPTION_FRAME
24 struct __EXCEPTION_FRAME
*Prev
;
25 PEXCEPTION_HANDLER Handler
;
26 } EXCEPTION_FRAME
, *PEXCEPTION_FRAME
;
28 /* VC++ extensions to Win32 SEH */
29 typedef struct _SCOPETABLE
32 int (*lpfnFilter
)(PEXCEPTION_POINTERS
);
33 int (*lpfnHandler
)(void);
34 } SCOPETABLE
, *PSCOPETABLE
;
36 typedef struct _MSVCRT_EXCEPTION_FRAME
38 EXCEPTION_FRAME
*prev
;
39 void (*handler
)(PEXCEPTION_RECORD
, PEXCEPTION_FRAME
,
40 PCONTEXT
, PEXCEPTION_RECORD
);
41 PSCOPETABLE scopetable
;
44 PEXCEPTION_POINTERS xpointers
;
45 } MSVCRT_EXCEPTION_FRAME
;
48 typedef struct __JUMP_BUFFER
56 unsigned long Registration
;
57 unsigned long TryLevel
;
58 /* Start of new struct members */
60 unsigned long UnwindFunc
;
61 unsigned long UnwindData
[6];
65 _local_unwind2(MSVCRT_EXCEPTION_FRAME
*RegistrationFrame
,
72 void __stdcall
_seh_longjmp_unwind(_JUMP_BUFFER
*jmp
)
74 _local_unwind2((MSVCRT_EXCEPTION_FRAME
*) jmp
->Registration
, jmp
->TryLevel
);