[DPLAYX]
[reactos.git] / reactos / dll / directx / wine / dplayx / dplayx_global.c
index 723744c..f5e2f42 100644 (file)
@@ -66,9 +66,10 @@ static LPVOID lpSharedStaticData = NULL;
 
 typedef struct
 {
-  DWORD used;
-  DWORD data[dwBlockSize-sizeof(DWORD)];
+  BOOL used;
+  BYTE data[dwBlockSize - sizeof(BOOL)];
 } DPLAYX_MEM_SLICE;
+C_ASSERT(sizeof(DPLAYX_MEM_SLICE) == dwBlockSize);
 
 static DPLAYX_MEM_SLICE* lpMemArea;
 
@@ -83,10 +84,10 @@ static void DPLAYX_PrivHeapFree( LPVOID addr )
     return;
   }
 
-  lpAddrStart = (char*)addr - sizeof(DWORD); /* Find block header */
+  lpAddrStart = CONTAINING_RECORD(addr, DPLAYX_MEM_SLICE, data); /* Find block header */
   dwBlockUsed =  ((BYTE*)lpAddrStart - (BYTE*)lpMemArea)/dwBlockSize;
 
-  lpMemArea[ dwBlockUsed ].used = 0;
+  lpMemArea[ dwBlockUsed ].used = FALSE;
 }
 
 static LPVOID DPLAYX_PrivHeapAlloc( DWORD flags, DWORD size )
@@ -94,20 +95,20 @@ static LPVOID DPLAYX_PrivHeapAlloc( DWORD flags, DWORD size )
   LPVOID lpvArea = NULL;
   UINT   uBlockUsed;
 
-  if( size > (dwBlockSize - sizeof(DWORD)) )
+  if( size > (dwBlockSize - sizeof(BOOL)) )
   {
     FIXME( "Size exceeded. Request of 0x%08x\n", size );
-    size = dwBlockSize - sizeof(DWORD);
+    size = dwBlockSize - sizeof(BOOL);
   }
 
   /* Find blank area */
   uBlockUsed = 0;
-  while( ( lpMemArea[ uBlockUsed ].used != 0 ) && ( uBlockUsed <= dwMaxBlock ) ) { uBlockUsed++; }
+  while( lpMemArea[ uBlockUsed ].used && uBlockUsed <= dwMaxBlock ) { uBlockUsed++; }
 
   if( uBlockUsed <= dwMaxBlock )
   {
     /* Set the area used */
-    lpMemArea[ uBlockUsed ].used = 1;
+    lpMemArea[ uBlockUsed ].used = TRUE;
     lpvArea = lpMemArea[ uBlockUsed ].data;
   }
   else
@@ -1183,7 +1184,7 @@ LPCSTR DPLAYX_HresultToString(HRESULT hr)
       /* For errors not in the list, return HRESULT as a string
          This part is not thread safe */
       WARN( "Unknown error 0x%08x\n", hr );
-      wsprintfA( szTempStr, "0x%08lx", hr );
+      wsprintfA( szTempStr, "0x%08x", hr );
       return szTempStr;
   }
 }