You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against e83f427a65726bfdefd2712a96f228e720c8b274
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From 2c63306841e4cca19e722282efab78af21d3f5eb Mon Sep 17 00:00:00 2001
|
||||
From 0b9ca95d49019b20fd8088c64217f524a9fe476f Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Wesie <awesie@gmail.com>
|
||||
Date: Fri, 27 Jul 2018 01:26:56 -0500
|
||||
Subject: [PATCH] Use NtContinue to continue execution after exceptions.
|
||||
@@ -14,9 +14,9 @@ unlikely that it has the correct behavior if called by an external caller.
|
||||
The __syscall_NtContinue wrapper is used so that it can be hooked by a
|
||||
third-party.
|
||||
---
|
||||
dlls/ntdll/exception.c | 9 +++++++--
|
||||
dlls/ntdll/signal_i386.c | 3 ++-
|
||||
2 files changed, 9 insertions(+), 3 deletions(-)
|
||||
dlls/ntdll/exception.c | 9 +++++++--
|
||||
dlls/ntdll/signal_i386.c | 10 ++++++++--
|
||||
2 files changed, 15 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/exception.c b/dlls/ntdll/exception.c
|
||||
index 3b85f1efa04..411d2bf5b8f 100644
|
||||
@@ -39,10 +39,10 @@ index 3b85f1efa04..411d2bf5b8f 100644
|
||||
|
||||
/*************************************************************
|
||||
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
|
||||
index 50152370b49..59255ed7493 100644
|
||||
index 87ffd62c8c5..6be23f850ba 100644
|
||||
--- a/dlls/ntdll/signal_i386.c
|
||||
+++ b/dlls/ntdll/signal_i386.c
|
||||
@@ -2589,6 +2589,7 @@ __ASM_STDCALL_FUNC( RtlUnwind, 16,
|
||||
@@ -2546,19 +2546,25 @@ __ASM_STDCALL_FUNC( RtlUnwind, 16,
|
||||
__ASM_CFI(".cfi_same_value %ebp\n\t")
|
||||
"ret $16" ) /* actually never returns */
|
||||
|
||||
@@ -50,15 +50,26 @@ index 50152370b49..59255ed7493 100644
|
||||
|
||||
/*******************************************************************
|
||||
* NtRaiseException (NTDLL.@)
|
||||
@@ -2596,7 +2597,7 @@ __ASM_STDCALL_FUNC( RtlUnwind, 16,
|
||||
*/
|
||||
NTSTATUS WINAPI NtRaiseException( EXCEPTION_RECORD *rec, CONTEXT *context, BOOL first_chance )
|
||||
{
|
||||
NTSTATUS status = raise_exception( rec, context, first_chance );
|
||||
- if (status == STATUS_SUCCESS) NtSetContextThread( GetCurrentThread(), context );
|
||||
+ if (status == STATUS_SUCCESS) __syscall_NtContinue(context, FALSE);
|
||||
return status;
|
||||
+ NTSTATUS status;
|
||||
+
|
||||
if (first_chance)
|
||||
{
|
||||
- NTSTATUS status = send_debug_event( rec, TRUE, context );
|
||||
+ status = send_debug_event( rec, TRUE, context );
|
||||
if (status == DBG_CONTINUE || status == DBG_EXCEPTION_HANDLED)
|
||||
NtSetContextThread( GetCurrentThread(), context );
|
||||
}
|
||||
- return raise_exception( rec, context, first_chance );
|
||||
+ status = raise_exception( rec, context, first_chance );
|
||||
+ if (status == STATUS_SUCCESS)
|
||||
+ __syscall_NtContinue(context, FALSE);
|
||||
+ return status;
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
||||
|
Reference in New Issue
Block a user