ReactOS 0.4.16-dev-1946-g52006dd
longjmp.c File Reference
#include <setjmp.h>
#include <windef.h>
Include dependency graph for longjmp.c:

Go to the source code of this file.

Functions

 __declspec (noreturn)
 

Function Documentation

◆ __declspec()

__declspec ( noreturn  )

Definition at line 11 of file longjmp.c.

18{
19 const _JUMP_BUFFER* jumpBuffer = (_JUMP_BUFFER*)_Buf;
20
21 /* Ensure _Value is non-zero */
22 _Value = (_Value == 0) ? 1 : _Value;
23
24 if (jumpBuffer->Frame != 0)
25 {
26 EXCEPTION_RECORD exceptionRecord = { 0 };
27 exceptionRecord.ExceptionCode = STATUS_LONGJUMP;
28 exceptionRecord.NumberParameters = 1;
29 exceptionRecord.ExceptionInformation[0] = (ULONG_PTR)jumpBuffer;
30
31 RtlUnwind((PVOID)jumpBuffer->Frame,
32 (PVOID)jumpBuffer->Rip,
33 &exceptionRecord,
35 }
36
37 __longjmp_noframe(jumpBuffer, _Value);
38}
#define RtlUnwind
Definition: longjmp.c:9
_In_ _Value
#define ULONG_PTR
Definition: config.h:101
#define STATUS_LONGJUMP
Definition: ntstatus.h:297
DWORD ExceptionCode
Definition: compat.h:208
DWORD NumberParameters
Definition: compat.h:212
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
Definition: compat.h:213
uint32_t ULONG_PTR
Definition: typedefs.h:65