ntdll: Set handler_data correctly in arm64 RtlVirtualUnwind.
This matches what tests show is done on actual windows, in the current testcases; in all currently tested cases, handler_data is reset to NULL when no handler is returned. Signed-off-by: Martin Storsjo <martin@martin.st> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
dae6979ee8
commit
a729af0e9c
|
@ -889,6 +889,8 @@ PVOID WINAPI RtlVirtualUnwind( ULONG type, ULONG_PTR base, ULONG_PTR pc,
|
||||||
|
|
||||||
TRACE( "type %x pc %lx sp %lx func %lx\n", type, pc, context->Sp, base + func->BeginAddress );
|
TRACE( "type %x pc %lx sp %lx func %lx\n", type, pc, context->Sp, base + func->BeginAddress );
|
||||||
|
|
||||||
|
*handler_data = NULL;
|
||||||
|
|
||||||
if (func->u.s.Flag)
|
if (func->u.s.Flag)
|
||||||
handler = unwind_packed_data( base, pc, func, context, ctx_ptr );
|
handler = unwind_packed_data( base, pc, func, context, ctx_ptr );
|
||||||
else
|
else
|
||||||
|
|
|
@ -4331,6 +4331,10 @@ static void call_virtual_unwind( int testnum, const struct unwind_test *test )
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ok( handler == NULL, "%u/%u: handler %p instead of NULL\n", testnum, i, handler );
|
ok( handler == NULL, "%u/%u: handler %p instead of NULL\n", testnum, i, handler );
|
||||||
|
ok( data == (test->results[i].handler < 0 ?
|
||||||
|
(void *)0xdeadbeef : NULL),
|
||||||
|
"%u/%u: handler data set to %p/%p\n", testnum, i, data,
|
||||||
|
(test->results[i].handler < 0 ? (void *)0xdeadbeef : NULL) );
|
||||||
}
|
}
|
||||||
|
|
||||||
ok( context.Pc == test->results[i].pc, "%u/%u: wrong pc %p/%p\n",
|
ok( context.Pc == test->results[i].pc, "%u/%u: wrong pc %p/%p\n",
|
||||||
|
|
Loading…
Reference in New Issue