listview maintainer review, please...

Dan Kegel dank at
Tue May 27 00:43:02 CDT 2008

The curious Valgrind error

+ Conditional jump or move depends on uninitialised value(s)
+    at  SetWindowPos (winpos.c:2034)
+    by  LISTVIEW_UpdateSize (listview.c:9380)
+    by  LISTVIEW_Size (listview.c:9320)
+    by  LISTVIEW_WindowProc (listview.c:9949)
+    by  (within /home/dank/wine-git/dlls/user32/
+    by  call_window_proc (winproc.c:457)
+    by  WINPROC_CallProcAtoW (winproc.c:901)
+    by  CallWindowProcA (winproc.c:2282)
+    by  listview_subclass_proc (listview.c:231)
+    by  (within /home/dank/wine-git/dlls/user32/
+    by  call_window_proc (winproc.c:457)
+    by  WINPROC_CallProcWtoA (winproc.c:1267)
+    by  WINPROC_call_window (winproc.c:2200)
+    by  call_window_proc (message.c:1610)
+    by  send_message (message.c:2434)
+    by  SendMessageW (message.c:2557)
+    by  DEFWND_DefWinProc (defwnd.c:746)
+    by  DefWindowProcW (defwnd.c:1037)
+    by  LISTVIEW_WindowProc (listview.c:9994)
+    by  (within /home/dank/wine-git/dlls/user32/
+  Uninitialised value was created by a stack allocation
+    at  LISTVIEW_UpdateSize (listview.c:9351)

started happening recently.  Looking at LISTVIEW_UpdateSize,
it seems clear that if
  SendMessageW( infoPtr->hwndHeader, HDM_LAYOUT, 0, (LPARAM)&hl );
fails for whatever reason, hl will be undefined, and that's
what Valgrind is complaining about.  Here's a patch that skips the
rest of the function if that line fails; it makes Valgrind happy, and
doesn't seem to hurt the conformance tests.  Can somebody familiar
with the code have a look at that function and explain what's going on here?
- Dan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: listview.patch
Type: text/x-diff
Size: 1419 bytes
Desc: not available
Url : 

More information about the wine-devel mailing list