mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 04:20:46 +00:00
- Slightly update heap-related routines to wine's routines. Doesn't fix regression tests really, but just in case.
svn path=/trunk/; revision=21955
This commit is contained in:
parent
0159a46c3c
commit
6e418a0fd9
2 changed files with 19 additions and 8 deletions
|
@ -213,12 +213,14 @@ HGLOBAL STDCALL
|
||||||
GlobalFree(HGLOBAL hMem)
|
GlobalFree(HGLOBAL hMem)
|
||||||
{
|
{
|
||||||
PGLOBAL_HANDLE phandle;
|
PGLOBAL_HANDLE phandle;
|
||||||
|
HGLOBAL hreturned;
|
||||||
|
|
||||||
DPRINT("GlobalFree( 0x%lX )\n", (ULONG)hMem);
|
DPRINT("GlobalFree( 0x%lX )\n", (ULONG)hMem);
|
||||||
|
|
||||||
|
hreturned = 0;
|
||||||
if (ISPOINTER(hMem)) /* POINTER */
|
if (ISPOINTER(hMem)) /* POINTER */
|
||||||
{
|
{
|
||||||
RtlFreeHeap(GetProcessHeap(), 0, (PVOID)hMem);
|
if(!RtlFreeHeap(GetProcessHeap(), 0, (PVOID)hMem))
|
||||||
hMem = 0;
|
hMem = 0;
|
||||||
}
|
}
|
||||||
else /* HANDLE */
|
else /* HANDLE */
|
||||||
|
@ -229,7 +231,8 @@ GlobalFree(HGLOBAL hMem)
|
||||||
|
|
||||||
if(MAGIC_GLOBAL_USED == phandle->Magic)
|
if(MAGIC_GLOBAL_USED == phandle->Magic)
|
||||||
{
|
{
|
||||||
|
/* WIN98 does not make this test. That is you can free a */
|
||||||
|
/* block you have not unlocked. Go figure!! */
|
||||||
if(phandle->LockCount!=0)
|
if(phandle->LockCount!=0)
|
||||||
{
|
{
|
||||||
DPRINT1("Warning! GlobalFree(0x%X) Freeing a handle to a locked object.\n", hMem);
|
DPRINT1("Warning! GlobalFree(0x%X) Freeing a handle to a locked object.\n", hMem);
|
||||||
|
@ -237,15 +240,17 @@ GlobalFree(HGLOBAL hMem)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(phandle->Pointer)
|
if(phandle->Pointer)
|
||||||
RtlFreeHeap(GetProcessHeap(), 0, (PVOID)((ULONG_PTR)phandle->Pointer - HANDLE_SIZE));
|
if (!RtlFreeHeap(GetProcessHeap(), 0, (PVOID)((ULONG_PTR)phandle->Pointer - HANDLE_SIZE)))
|
||||||
|
hreturned = hMem;
|
||||||
|
|
||||||
RtlFreeHeap(GetProcessHeap(), 0, phandle);
|
if (!RtlFreeHeap(GetProcessHeap(), 0, phandle))
|
||||||
|
hreturned = hMem;
|
||||||
}
|
}
|
||||||
HeapUnlock(GetProcessHeap());
|
HeapUnlock(GetProcessHeap());
|
||||||
|
|
||||||
hMem = 0;
|
hMem = 0;
|
||||||
}
|
}
|
||||||
return hMem;
|
return hreturned;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,9 +40,15 @@
|
||||||
*/
|
*/
|
||||||
HANDLE STDCALL HeapCreate(DWORD flags, DWORD dwInitialSize, DWORD dwMaximumSize)
|
HANDLE STDCALL HeapCreate(DWORD flags, DWORD dwInitialSize, DWORD dwMaximumSize)
|
||||||
{
|
{
|
||||||
|
HANDLE hRet;
|
||||||
DPRINT("HeapCreate( 0x%lX, 0x%lX, 0x%lX )\n", flags, dwInitialSize, dwMaximumSize);
|
DPRINT("HeapCreate( 0x%lX, 0x%lX, 0x%lX )\n", flags, dwInitialSize, dwMaximumSize);
|
||||||
return(RtlCreateHeap(flags, NULL, dwMaximumSize, dwInitialSize, NULL, NULL));
|
|
||||||
|
hRet = RtlCreateHeap(flags, NULL, dwMaximumSize, dwInitialSize, NULL, NULL);
|
||||||
|
|
||||||
|
if (!hRet)
|
||||||
|
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
|
||||||
|
|
||||||
|
return hRet;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
|
|
Loading…
Reference in a new issue