Sebastian Lackner : kernel32: Process DBG_RIPEXCEPTION events like regular exceptions.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jun 23 12:57:40 CDT 2014
Module: wine
Branch: master
Commit: 0114be0978b66371f708487c7a1c311a268be753
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0114be0978b66371f708487c7a1c311a268be753
Author: Sebastian Lackner <sebastian at fds-team.de>
Date: Mon Jun 23 02:56:12 2014 +0200
kernel32: Process DBG_RIPEXCEPTION events like regular exceptions.
---
dlls/kernel32/debugger.c | 11 +++++++----
include/ntstatus.h | 1 +
include/winnt.h | 1 +
3 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/dlls/kernel32/debugger.c b/dlls/kernel32/debugger.c
index 738b6f0..d4d66b2 100644
--- a/dlls/kernel32/debugger.c
+++ b/dlls/kernel32/debugger.c
@@ -85,6 +85,13 @@ BOOL WINAPI WaitForDebugEvent(
event->u.DebugString.nDebugStringLength = data.exception.params[0];
break;
}
+ else if (data.exception.exc_code == DBG_RIPEXCEPTION && data.exception.nb_params >= 2)
+ {
+ event->dwDebugEventCode = RIP_EVENT;
+ event->u.RipInfo.dwError = data.exception.params[0];
+ event->u.RipInfo.dwType = data.exception.params[1];
+ break;
+ }
event->u.Exception.dwFirstChance = data.exception.first;
event->u.Exception.ExceptionRecord.ExceptionCode = data.exception.exc_code;
event->u.Exception.ExceptionRecord.ExceptionFlags = data.exception.flags;
@@ -128,10 +135,6 @@ BOOL WINAPI WaitForDebugEvent(
case UNLOAD_DLL_DEBUG_EVENT:
event->u.UnloadDll.lpBaseOfDll = wine_server_get_ptr( data.unload_dll.base );
break;
- case RIP_EVENT:
- event->u.RipInfo.dwError = data.rip_info.error;
- event->u.RipInfo.dwType = data.rip_info.type;
- break;
}
done:
/* nothing */ ;
diff --git a/include/ntstatus.h b/include/ntstatus.h
index 9a7ca7a..325ce55 100644
--- a/include/ntstatus.h
+++ b/include/ntstatus.h
@@ -1212,6 +1212,7 @@
#define DBG_TERMINATE_PROCESS ((NTSTATUS) 0x40010004)
#define DBG_CONTROL_C ((NTSTATUS) 0x40010005)
#define DBG_PRINTEXCEPTION_C ((NTSTATUS) 0x40010006)
+#define DBG_RIPEXCEPTION ((NTSTATUS) 0x40010007)
#define DBG_CONTROL_BREAK ((NTSTATUS) 0x40010008)
#define DBG_COMMAND_EXCEPTION ((NTSTATUS) 0x40010009)
#define DBG_EXCEPTION_NOT_HANDLED ((NTSTATUS) 0x80010001)
diff --git a/include/winnt.h b/include/winnt.h
index e9e330d..709a93f 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -623,6 +623,7 @@ typedef DWORD FLONG;
#define DBG_TERMINATE_PROCESS ((DWORD) 0x40010004)
#define DBG_CONTROL_C ((DWORD) 0x40010005)
#define DBG_PRINTEXCEPTION_C ((DWORD) 0x40010006)
+#define DBG_RIPEXCEPTION ((DWORD) 0x40010007)
#define DBG_CONTROL_BREAK ((DWORD) 0x40010008)
#define DBG_COMMAND_EXCEPTION ((DWORD) 0x40010009)
#define DBG_EXCEPTION_NOT_HANDLED ((DWORD) 0x80010001)
More information about the wine-cvs
mailing list