On 08/06/16 01:39, Daniel Lehman wrote:
if (rec->ExceptionFlags & EH_TARGET_UNWIND &&
dispatch->TargetIp < dispatch->ImageBase + table->ScopeRecord[i].EndAddress)
{
break;
}
Here's a test that shows that you also need to check BeginAddress: BOOL first = TRUE;
__try { begin: if(!first) { printf("here\n"); return 0; }
first = FALSE; __try { __try { goto begin; } __finally { printf("finally 1\n"); } } __finally { printf("finally 2\n"); } } __finally { printf("finally 3\n"); }