Author: mjmartin Date: Fri Apr 17 13:59:03 2009 New Revision: 40557
URL: http://svn.reactos.org/svn/reactos?rev=40557&view=rev Log: - Add volatile to variables in OutputDebugStringA. Fix #1 of ? for 3424.
Modified: trunk/reactos/dll/win32/kernel32/debug/output.c
Modified: trunk/reactos/dll/win32/kernel32/debug/output.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/debug/ou... ============================================================================== --- trunk/reactos/dll/win32/kernel32/debug/output.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/debug/output.c [iso-8859-1] Fri Apr 17 13:59:03 2009 @@ -219,9 +219,9 @@ static BOOL s_bDBMonMutexTriedOpen = FALSE;
/* local copy of the mutex handle */ - HANDLE hDBMonMutex = s_hDBMonMutex; + volatile HANDLE hDBMonMutex = s_hDBMonMutex; /* handle to the Section of the shared buffer */ - HANDLE hDBMonBuffer = NULL; + volatile HANDLE hDBMonBuffer = NULL;
/* pointer to the mapped view of the shared buffer. It consist of the current process id followed by the message string */ @@ -229,11 +229,11 @@
/* event: signaled by the debug message monitor when OutputDebugString can write to the shared buffer */ - HANDLE hDBMonBufferReady = NULL; + volatile HANDLE hDBMonBufferReady = NULL;
/* event: to be signaled by OutputDebugString when it's done writing to the shared buffer */ - HANDLE hDBMonDataReady = NULL; + volatile HANDLE hDBMonDataReady = NULL;
/* mutex not opened, and no previous attempts to open/create it */ if(hDBMonMutex == NULL && !s_bDBMonMutexTriedOpen) @@ -295,10 +295,10 @@ _SEH2_TRY { /* size of the current output block */ - SIZE_T nRoundLen; + volatile SIZE_T nRoundLen;
/* size of the remainder of the string */ - SIZE_T nOutputStringLen; + volatile SIZE_T nOutputStringLen;
/* output the whole string */ nOutputStringLen = strlen(_OutputString); @@ -339,11 +339,12 @@ else { /* output in blocks of 512 characters */ - CHAR a_cBuffer[512]; + volatile PCHAR a_cBuffer; + a_cBuffer = (CHAR*)HeapAlloc(GetProcessHeap(), 0, 512);
/* write a maximum of 511 bytes */ - if(nOutputStringLen > (sizeof(a_cBuffer) - 2)) - nRoundLen = sizeof(a_cBuffer) - 2; + if(nOutputStringLen > 510) + nRoundLen = 510; else nRoundLen = nOutputStringLen;
@@ -355,6 +356,8 @@
/* send the current block to the kernel debugger */ DbgPrint("%s", a_cBuffer); + + HeapFree(GetProcessHeap(), 0, a_cBuffer); }
/* move to the next block */