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