/* entries have invalid ids of */
/* zero and zero stack fields. */
/* Used only with GC_win32_dll_threads. */
+ LONG long_in_use; /* The same but of the type that */
+ /* matches the first argument of */
+ /* InterlockedExchange(); volatile is */
+ /* omitted because the ancient version */
+ /* of the prototype lacks the qualifier.*/
# endif
struct GC_Thread_Rep * next;
/* Hash table link without */
/* around code that doesn't call back into the system libraries */
/* might be OK. But this hasn't been tested across all win32 */
/* variants. */
- /* cast away volatile qualifier */
for (i = 0;
- InterlockedExchange((word*)&dll_thread_table[i].tm.in_use, 1) != 0;
+ InterlockedExchange(&dll_thread_table[i].tm.long_in_use, 1) != 0;
i++) {
/* Compare-and-swap would make this cleaner, but that's not */
/* supported before Windows 98 and NT 4.0. In Windows 2000, */