1 // Copyright (c) Microsoft. All rights reserved. 2 // Licensed under the MIT license. See LICENSE file in the project root for 3 // full license information. 4 5 #include <windows.h> 6 #include <setjmp.h> 7 #include "seh.h" 8 9 char test[] = "SEH0022.c"; 10 11 int main() { 12 jmp_buf JumpBuffer; 13 LONG Counter; 14 15 Counter = 0; 16 17 try { 18 if (_setjmp(JumpBuffer) == 0) { 19 /* set counter = 1 */ 20 //(volatile LONG) Counter += 1; 21 *(volatile LONG*)&Counter += 1; 22 } else { 23 /* set counter = 4 */ 24 //(volatile LONG) Counter += 1; 25 *(volatile LONG*)&Counter += 1; 26 } 27 } 28 finally { 29 /* set counter = 2 and 5 */ 30 Counter += 1; 31 if (Counter == 2) { 32 /* set counter = 3 */ 33 //(volatile LONG) Counter += 1; 34 *(volatile LONG*)&Counter += 1; 35 longjmp(JumpBuffer, 1); 36 } 37 } 38 endtry 39 40 if (Counter != 5) { 41 printf("TEST 22 FAILED. Counter = %d\n\r", Counter); 42 return -1; 43 } 44 45 return 0; 46 } 47