Vincent Béron wrote:

Le sam 16/10/2004 à 23:54, Dmitry Timoshkov a écrit :


"Vincent Béron" <[EMAIL PROTECTED]> wrote:



We try to put a pointer in a DWORD in a static initialization of
CRITICAL_SECTION_DEBUGs. Of course it doesn't work on Win64. We'll have
to find a better solution though.


Another way to fix it is to use full 'DWORD Spare[2]' to store a pointer
on Win64 and leave it as it is now for Win32.



I tried, but since it's a static initialization you don't have access to & (addessof), so you can't put the high part in one and the low part in the other. Maybe with a union, but then we'd extend a MS type.

Vincent


How about this, then?

--
Shachar Shemesh
Lingnu Open Source Consulting ltd.
http://www.lingnu.com/

Index: dlls/dinput/keyboard.c
===================================================================
RCS file: /home/sun/sources/cvs/wine/dlls/dinput/keyboard.c,v
retrieving revision 1.9
diff -u -r1.9 keyboard.c
--- dlls/dinput/keyboard.c      21 Sep 2004 20:04:37 -0000      1.9
+++ dlls/dinput/keyboard.c      17 Oct 2004 05:23:04 -0000
@@ -75,11 +75,12 @@
 static BYTE DInputKeyState[256]; /* array for 'GetDeviceState' */
 
 static CRITICAL_SECTION keyboard_crit;
+static const char * const critsect_debug_strid = __FILE__ ": keyboard_crit";
 static CRITICAL_SECTION_DEBUG critsect_debug =
 {
     0, 0, &keyboard_crit,
     { &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
-      0, 0, { 0, (DWORD)(__FILE__ ": keyboard_crit") }
+      0, 0, { HIDWORD(critsect_debug_strid), LODDWORD(critsect_debug_strid) }
 };
 static CRITICAL_SECTION keyboard_crit = { &critsect_debug, -1, 0, 0, 0, 0 };
 

Reply via email to