ntdll: Print fixme message in case of nested exception.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b23de3cd4a
commit
10fa7c6e45
|
@ -2250,6 +2250,15 @@ static RUNTIME_FUNCTION *lookup_function_info( ULONG64 pc, ULONG64 *base, LDR_MO
|
||||||
return func;
|
return func;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static DWORD nested_exception_handler( EXCEPTION_RECORD *rec, EXCEPTION_REGISTRATION_RECORD *frame,
|
||||||
|
CONTEXT *context, EXCEPTION_REGISTRATION_RECORD **dispatcher )
|
||||||
|
{
|
||||||
|
if (rec->ExceptionFlags & (EH_UNWINDING | EH_EXIT_UNWIND)) return ExceptionContinueSearch;
|
||||||
|
|
||||||
|
/* FIXME */
|
||||||
|
return ExceptionNestedException;
|
||||||
|
}
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* call_handler
|
* call_handler
|
||||||
*
|
*
|
||||||
|
@ -2258,12 +2267,18 @@ static RUNTIME_FUNCTION *lookup_function_info( ULONG64 pc, ULONG64 *base, LDR_MO
|
||||||
*/
|
*/
|
||||||
static DWORD call_handler( EXCEPTION_RECORD *rec, CONTEXT *context, DISPATCHER_CONTEXT *dispatch )
|
static DWORD call_handler( EXCEPTION_RECORD *rec, CONTEXT *context, DISPATCHER_CONTEXT *dispatch )
|
||||||
{
|
{
|
||||||
|
EXCEPTION_REGISTRATION_RECORD frame;
|
||||||
DWORD res;
|
DWORD res;
|
||||||
|
|
||||||
|
frame.Handler = nested_exception_handler;
|
||||||
|
__wine_push_frame( &frame );
|
||||||
|
|
||||||
TRACE( "calling handler %p (rec=%p, frame=0x%lx context=%p, dispatch=%p)\n",
|
TRACE( "calling handler %p (rec=%p, frame=0x%lx context=%p, dispatch=%p)\n",
|
||||||
dispatch->LanguageHandler, rec, dispatch->EstablisherFrame, dispatch->ContextRecord, dispatch );
|
dispatch->LanguageHandler, rec, dispatch->EstablisherFrame, dispatch->ContextRecord, dispatch );
|
||||||
res = dispatch->LanguageHandler( rec, dispatch->EstablisherFrame, context, dispatch );
|
res = dispatch->LanguageHandler( rec, dispatch->EstablisherFrame, context, dispatch );
|
||||||
TRACE( "handler at %p returned %u\n", dispatch->LanguageHandler, res );
|
TRACE( "handler at %p returned %u\n", dispatch->LanguageHandler, res );
|
||||||
|
|
||||||
|
__wine_pop_frame( &frame );
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2392,7 +2407,9 @@ static NTSTATUS call_stack_handlers( EXCEPTION_RECORD *rec, CONTEXT *orig_contex
|
||||||
*orig_context = *dispatch.ContextRecord;
|
*orig_context = *dispatch.ContextRecord;
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
case ExceptionContinueSearch:
|
case ExceptionContinueSearch:
|
||||||
|
break;
|
||||||
case ExceptionNestedException:
|
case ExceptionNestedException:
|
||||||
|
FIXME( "nested exception\n" );
|
||||||
break;
|
break;
|
||||||
case ExceptionCollidedUnwind: {
|
case ExceptionCollidedUnwind: {
|
||||||
ULONG64 frame;
|
ULONG64 frame;
|
||||||
|
@ -2421,7 +2438,9 @@ static NTSTATUS call_stack_handlers( EXCEPTION_RECORD *rec, CONTEXT *orig_contex
|
||||||
*orig_context = *dispatch.ContextRecord;
|
*orig_context = *dispatch.ContextRecord;
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
case ExceptionContinueSearch:
|
case ExceptionContinueSearch:
|
||||||
|
break;
|
||||||
case ExceptionNestedException:
|
case ExceptionNestedException:
|
||||||
|
FIXME( "nested exception\n" );
|
||||||
break;
|
break;
|
||||||
case ExceptionCollidedUnwind: {
|
case ExceptionCollidedUnwind: {
|
||||||
ULONG64 frame;
|
ULONG64 frame;
|
||||||
|
|
Loading…
Reference in New Issue