shell32: trace APPBARDATA struct members based on message type (Valgrind)

Austin English austinenglish at gmail.com
Fri Feb 11 20:38:38 CST 2011


Fixes most of http://austinenglish.com/logs/valgrind/2011-02-11-10.45/vg-shell32_appbar.txt,
all that's left is:
 Syscall param writev(vector[...]) points to uninitialised byte(s)
    at  writev (in /lib/libc-2.11.2.so)
    by  send_request (server.c:209)
    by  wine_server_call (server.c:290)
    by  put_message_in_queue (message.c:2923)
    by  send_inter_thread_message (message.c:2991)
    by  send_message (message.c:3059)
    by  SendMessageTimeoutW (message.c:3125)
    by  SHAppBarMessage (appbar.c:115)
    by  test_setpos (appbar.c:222)
    by  func_appbar (appbar.c:442)
    by  run_test (test.h:556)
    by  main (test.h:624)
  Address 0x7f23fa60 is on thread 1's stack
  Uninitialised value was created by a stack allocation
    at  test_setpos (appbar.c:203)


-- 
-Austin
-------------- next part --------------
diff --git a/dlls/shell32/appbar.c b/dlls/shell32/appbar.c
index 212ee37..4d0effc 100644
--- a/dlls/shell32/appbar.c
+++ b/dlls/shell32/appbar.c
@@ -74,9 +74,36 @@ UINT_PTR WINAPI SHAppBarMessage(DWORD msg, PAPPBARDATA data)
 
     UINT_PTR ret = 0;
 
-    TRACE("msg=%d, data={cb=%d, hwnd=%p, callback=%x, edge=%d, rc=%s, lparam=%lx}\n",
-            msg, data->cbSize, data->hWnd, data->uCallbackMessage, data->uEdge,
-            wine_dbgstr_rect(&data->rc), data->lParam);
+    TRACE("msg=%d, data={cb=%d, hwnd=%p}\n", msg, data->cbSize, data->hWnd);
+
+    /* These members are message dependent */
+    switch(msg)
+    {
+        case ABM_NEW:
+        TRACE("callback: %x\n", data->uCallbackMessage);
+        break;
+
+        case ABM_GETAUTOHIDEBAR:
+        TRACE("edge: %d\n", data->uEdge);
+        break;
+
+        case ABM_QUERYPOS:
+        case ABM_SETPOS:
+        TRACE("edge: %d, rc: %s\n", data->uEdge, wine_dbgstr_rect(&data->rc));
+        break;
+
+        case ABM_GETTASKBARPOS:
+        TRACE("rc: %s\n", wine_dbgstr_rect(&data->rc));
+        break;
+
+        case ABM_SETAUTOHIDEBAR:
+        TRACE("edge: %d, lParam: %lx\n", data->uEdge, data->lParam);
+        break;
+
+        default:
+        FIXME("unknown msg: %d\n", msg);
+        break;
+    }
 
     if (data->cbSize < sizeof(APPBARDATA))
     {


More information about the wine-patches mailing list