Dan Kegel a écrit :
One more of the 100 valgrind warnings; this one is in kernel32/tests/console.c (but really in wineconsole). It's code Eric wrote six years ago, and the fix might be as straightforward as using memcpy(&ir, 0, sizeof(ir)) in WCUSER_GenerateMouseInputRecord(). Is there a better fix?
the issue in fixing WCUSER_GenerateMouseInputRecord() is that we'll still get the same warning in valgrind from a partly initialized INPUT_RECORD from any caller to WriteConsoleInput (and the code in wineconsole is perfectly correct as it only assigns the fields it needs for a MouseEvent) the cleanest fix should be in WriteConsoleInput not to pass the undefined parts to wineserver (or to set them to zero) A+
Short form:
SyscallParam wine_server_call WriteConsoleInputW WCUSER_GenerateMouseInputRecord WCUSER_Proc call_window_proc WINPROC_call_window DispatchMessageW WCUSER_MainLoop WinMain main
Long form:
<kind>SyscallParam</kind> <what>Syscall param writev(vector[...]) points to uninitialised byte(s)</what>
<stack> <frame> <obj>dlls/ntdll/ntdll.dll.so</obj> <fn>wine_server_call</fn> <dir>dlls/ntdll</dir> <file>server.c</file> <line>248</line> </frame> <frame> <obj>dlls/kernel32/kernel32.dll.so</obj> <fn>WriteConsoleInputW</fn> <dir>dlls/kernel32/../../include/wine</dir> <file>server.h</file> <line>61</line> </frame> <frame> <obj>programs/wineconsole/wineconsole.exe.so</obj> <fn>WCUSER_GenerateMouseInputRecord</fn> <dir>programs/wineconsole</dir> <file>user.c</file> <line>1087</line> </frame> <frame> <obj>programs/wineconsole/wineconsole.exe.so</obj> <fn>WCUSER_Proc</fn> <dir>programs/wineconsole</dir> <file>user.c</file> <line>1186</line> </frame> <frame> <obj>dlls/user32/user32.dll.so</obj> </frame> <frame> <obj>dlls/user32/user32.dll.so</obj> <fn>call_window_proc</fn> <dir>dlls/user32</dir> <file>winproc.c</file> <line>458</line> </frame> <frame> <obj>dlls/user32/user32.dll.so</obj> <fn>WINPROC_call_window</fn> <dir>dlls/user32</dir> <file>winproc.c</file> <line>2212</line> </frame> <frame> <obj>dlls/user32/user32.dll.so</obj> <fn>DispatchMessageW</fn> <dir>dlls/user32</dir> <file>message.c</file> <line>3108</line> </frame> <frame> <obj>programs/wineconsole/wineconsole.exe.so</obj> <fn>WCUSER_MainLoop</fn> <dir>programs/wineconsole</dir> <file>user.c</file> <line>1378</line> </frame> <origin> <what>Uninitialised value was created by a stack allocation</what> <stack> <frame> <obj>programs/wineconsole/wineconsole.exe.so</obj> <fn>WCUSER_GenerateMouseInputRecord</fn> <dir>programs/wineconsole</dir> <file>user.c</file> <line>1066</line> </frame> </stack> </origin>