1*fe36f081STimo Kreuzer // Copyright (c) Microsoft. All rights reserved. 2*fe36f081STimo Kreuzer // Licensed under the MIT license. See LICENSE file in the project root for 3*fe36f081STimo Kreuzer // full license information. 4*fe36f081STimo Kreuzer 5*fe36f081STimo Kreuzer #include <windows.h> 6*fe36f081STimo Kreuzer #include "seh.h" 7*fe36f081STimo Kreuzer 8*fe36f081STimo Kreuzer char test[] = "SEH0016.c"; 9*fe36f081STimo Kreuzer int perfect; 10*fe36f081STimo Kreuzer 11*fe36f081STimo Kreuzer void rtlRaiseExceptin(DWORD Status) { 12*fe36f081STimo Kreuzer RaiseException(Status, 0, /*no flags*/ 0, 0); 13*fe36f081STimo Kreuzer return; 14*fe36f081STimo Kreuzer } 15*fe36f081STimo Kreuzer 16*fe36f081STimo Kreuzer int main() { 17*fe36f081STimo Kreuzer LONG Counter; 18*fe36f081STimo Kreuzer 19*fe36f081STimo Kreuzer Counter = 0; 20*fe36f081STimo Kreuzer 21*fe36f081STimo Kreuzer try { 22*fe36f081STimo Kreuzer try { 23*fe36f081STimo Kreuzer try { 24*fe36f081STimo Kreuzer /* set counter = 1 and raise exception */ 25*fe36f081STimo Kreuzer Counter += 1; 26*fe36f081STimo Kreuzer rtlRaiseExceptin(EXCEPTION_INT_OVERFLOW); 27*fe36f081STimo Kreuzer } 28*fe36f081STimo Kreuzer except(1) { 29*fe36f081STimo Kreuzer /* set counter = 2 */ 30*fe36f081STimo Kreuzer Counter += 1; 31*fe36f081STimo Kreuzer goto t11; /* can't jump into the body of a try/finally */ 32*fe36f081STimo Kreuzer } 33*fe36f081STimo Kreuzer endtry 34*fe36f081STimo Kreuzer } 35*fe36f081STimo Kreuzer finally { 36*fe36f081STimo Kreuzer /* set counter = 3 */ 37*fe36f081STimo Kreuzer Counter += 1; 38*fe36f081STimo Kreuzer } 39*fe36f081STimo Kreuzer endtry 40*fe36f081STimo Kreuzer 41*fe36f081STimo Kreuzer t11: 42*fe36f081STimo Kreuzer ; 43*fe36f081STimo Kreuzer } 44*fe36f081STimo Kreuzer finally { 45*fe36f081STimo Kreuzer /* set counter = 4 */ 46*fe36f081STimo Kreuzer Counter += 1; 47*fe36f081STimo Kreuzer } 48*fe36f081STimo Kreuzer endtry 49*fe36f081STimo Kreuzer 50*fe36f081STimo Kreuzer if (Counter != 4) { 51*fe36f081STimo Kreuzer printf("TEST 16 FAILED. Counter = %d\n\r", Counter); 52*fe36f081STimo Kreuzer return -1; 53*fe36f081STimo Kreuzer } 54*fe36f081STimo Kreuzer 55*fe36f081STimo Kreuzer return 0; 56*fe36f081STimo Kreuzer } 57