On Tue Jan 23 15:50:06 2024 +0000, Jinoh Kang wrote:
I'm not sure about this. Does `options = (CONTINUE_OPTIONS *)2` mean alertable too?
Yes, that's how it's described and I also had tested that. Now I implemented APC test in latest revision so that can be used to check this but I didn't include this case since don't know if it's worth having test for it. But basically in this latest revision try
```diff diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c index 452ff1af9db..94d86d3579a 100644 --- a/dlls/ntdll/tests/exception.c +++ b/dlls/ntdll/tests/exception.c @@ -4577,7 +4577,7 @@ static void test_continue(BOOL testContinueEx, BOOL alertable) CONTINUE_OPTIONS opts = { 0 }; opts.ContinueType = CONTINUE_UNWIND; /* Nothing else is implemented */ opts.ContinueFlags = alertable ? CONTINUE_FLAG_TEST_ALERT : 0; - func_ptr( &contexts, &opts, NtContinueEx, pRtlCaptureContext ); + func_ptr( &contexts, alertable ? 0xff : 0, NtContinueEx, pRtlCaptureContext ); } else { func_ptr( &contexts, (void *)(intptr_t)alertable, NtContinue, pRtlCaptureContext ); ```
And you'll see it still passes on Windows.
PS. For APC test I merged duplicated `apc_func()` into one with !5041 (included here)