[2/2] user32: do not call NULL message callback

Fabian Bieler der.fabe at gmx.net
Sat Feb 24 12:57:22 CST 2007


Catch NULL callbacks from SendMessageCallback;
Enable testcase from previous patch.
-------------- next part --------------
From e8320555fa8599591a93f311c6df8be9b654dcec Mon Sep 17 00:00:00 2001
From: Fabian Bieler <der.fabe at gmx.net>
Date: Sat, 24 Feb 2007 19:46:53 +0100
Subject: [PATCH] [2/2] user32: do not call NULL message callback

---
 dlls/user32/message.c   |   21 ++++++++++++---------
 dlls/user32/tests/msg.c |   21 +++++++++------------
 2 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/dlls/user32/message.c b/dlls/user32/message.c
index 22b922d..5814950 100644
--- a/dlls/user32/message.c
+++ b/dlls/user32/message.c
@@ -1905,15 +1905,18 @@ static BOOL process_hardware_message( MSG *msg, UINT hw_id, ULONG_PTR extra_info
 static inline void call_sendmsg_callback( SENDASYNCPROC callback, HWND hwnd, UINT msg,
                                           ULONG_PTR data, LRESULT result )
 {
-    if (TRACE_ON(relay))
-        DPRINTF( "%04x:Call message callback %p (hwnd=%p,msg=%s,data=%08lx,result=%08lx)\n",
-                 GetCurrentThreadId(), callback, hwnd, SPY_GetMsgName( msg, hwnd ),
-                 data, result );
-    callback( hwnd, msg, data, result );
-    if (TRACE_ON(relay))
-        DPRINTF( "%04x:Ret  message callback %p (hwnd=%p,msg=%s,data=%08lx,result=%08lx)\n",
-                 GetCurrentThreadId(), callback, hwnd, SPY_GetMsgName( msg, hwnd ),
-                 data, result );
+    if(callback)
+    {
+        if (TRACE_ON(relay))
+            DPRINTF( "%04x:Call message callback %p (hwnd=%p,msg=%s,data=%08lx,result=%08lx)\n",
+                    GetCurrentThreadId(), callback, hwnd, SPY_GetMsgName( msg, hwnd ),
+                    data, result );
+        callback( hwnd, msg, data, result );
+        if (TRACE_ON(relay))
+            DPRINTF( "%04x:Ret  message callback %p (hwnd=%p,msg=%s,data=%08lx,result=%08lx)\n",
+                    GetCurrentThreadId(), callback, hwnd, SPY_GetMsgName( msg, hwnd ),
+                    data, result );
+    }
 }
 
 
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index 39bb94a..0665b55 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -8894,23 +8894,20 @@ static void test_nullCallback(void)
     HWND hwnd;
     MSG msg;
 
-    if(0)
-    {
-        hwnd = CreateWindowExA(0, "TestWindowClass", "Test overlapped", WS_OVERLAPPEDWINDOW,
-                               100, 100, 200, 200, 0, 0, 0, NULL);
-        ok (hwnd != 0, "Failed to create overlapped window\n");
+    hwnd = CreateWindowExA(0, "TestWindowClass", "Test overlapped", WS_OVERLAPPEDWINDOW,
+                            100, 100, 200, 200, 0, 0, 0, NULL);
+    ok (hwnd != 0, "Failed to create overlapped window\n");
 
-        ShowWindow(hwnd, SW_SHOW);
-        UpdateWindow( hwnd );
+    ShowWindow(hwnd, SW_SHOW);
+    UpdateWindow( hwnd );
 
-        SendMessageCallbackA(hwnd,WM_NULL,0,0,NULL,0);
+    SendMessageCallbackA(hwnd,WM_NULL,0,0,NULL,0);
 
-        while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
+    while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
 
-        ok(1, "\n");
+    ok(1, "\n");
 
-        DestroyWindow(hwnd);
-    }
+    DestroyWindow(hwnd);
 }
 
 START_TEST(msg)
-- 
1.4.4.1



More information about the wine-patches mailing list