ntdll: Return from snoop tracing helpers earlier if tracing is disabled.

Dmitry Timoshkov dmitry at baikal.ru
Sun Oct 18 21:28:31 CDT 2015


This allows turning off and on snooping from task manager.

Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
 dlls/ntdll/relay.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/dlls/ntdll/relay.c b/dlls/ntdll/relay.c
index ef0af0f..449a25a 100644
--- a/dlls/ntdll/relay.c
+++ b/dlls/ntdll/relay.c
@@ -978,6 +978,8 @@ static void SNOOP_PrintArg(DWORD x)
 {
     int i,nostring;
 
+    if (!TRACE_ON(snoop)) return;
+
     DPRINTF("%08x",x);
     if (IS_INTARG(x) || TRACE_ON(seh)) return; /* trivial reject to avoid faults */
     __TRY
@@ -1085,6 +1087,8 @@ void WINAPI __regs_SNOOP_Entry( CONTEXT *context )
 
 	context->Eip = (DWORD)fun->origfun;
 
+        if (!TRACE_ON(snoop)) return;
+
 	if (TRACE_ON(timestamp))
 		print_timestamp();
 	if (fun->name) DPRINTF("%04x:CALL %s.%s(",GetCurrentThreadId(),dll->name,fun->name);
@@ -1121,6 +1125,12 @@ void WINAPI __regs_SNOOP_Return( CONTEXT *context )
 	if (ret->dll->funs[ret->ordinal].nrofargs<0)
 		ret->dll->funs[ret->ordinal].nrofargs=(context->Esp - ret->origESP-4)/4;
 	context->Eip = (DWORD)ret->origreturn;
+
+        if (!TRACE_ON(snoop)) {
+            ret->origreturn = NULL; /* mark as empty */
+            return;
+        }
+
 	if (TRACE_ON(timestamp))
 		print_timestamp();
 	if (ret->args) {
-- 
2.6.1




More information about the wine-patches mailing list