diff options
Diffstat (limited to 'winsup/mingw/samples/seh/sehtest.c')
-rw-r--r-- | winsup/mingw/samples/seh/sehtest.c | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/winsup/mingw/samples/seh/sehtest.c b/winsup/mingw/samples/seh/sehtest.c deleted file mode 100644 index f1c18d05e..000000000 --- a/winsup/mingw/samples/seh/sehtest.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * This file tests some of the basics of structured exception handling as - * implemented in excpt.h and the Windows API header files. - * - * The program installs two exception handlers, then attempts to write to - * a pointer to an invalid address. This causes an exception which passes - * through the exception handlers and on to the default system exception - * handler. That handler brings up the dialog box all Windows users know - * and love, and then the program is terminated. - * - * You might note that after the initial run up through our exception frames - * we get a second run up through them with the exception code - * STATUS_INVALID_DISPOSITION and the code EH_UNWINDING. This seems normal - * except that the code got changed from the previous STATUS_ACCESS_VIOLATION. - * I don't understand that bit particularly. - */ - -#include <stdio.h> -#include <excpt.h> - -#include "exutil.h" - -EXCEPTION_DISPOSITION -my_handler ( - struct _EXCEPTION_RECORD* pExceptionRec, - void* pEstablisherFrame, - struct _CONTEXT* pContextRecord, - void* pDispatcherContext - ) -{ - printf ("In my exception handler!\n"); - DumpExceptionRecord (pExceptionRec); - return ExceptionContinueSearch; -} - -EXCEPTION_DISPOSITION -my_handler2 ( - struct _EXCEPTION_RECORD* pExceptionRec, - void* pEstablisherFrame, - struct _CONTEXT* pContextRecord, - void* pDispatcherContext - ) -{ - printf ("In top exception handler!\n"); - DumpExceptionRecord (pExceptionRec); - return ExceptionContinueSearch; -} - -main () -{ - char* x; - - printf ("my_handler2 = %08x\n", my_handler2); - printf ("my_handler = %08x\n", my_handler); - - WalkExceptionHandlers(); - - __try1(my_handler2) - x = (char*) 10; - - WalkExceptionHandlers(); - - __try1(my_handler) - - WalkExceptionHandlers(); - - *x = 1; - __except1 - __except1 - printf ("Finished!\n"); -} - |