mirror of
https://github.com/reactos/reactos.git
synced 2025-04-19 12:08:55 +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)
|
||||
{
|
||||
PGLOBAL_HANDLE phandle;
|
||||
HGLOBAL hreturned;
|
||||
|
||||
DPRINT("GlobalFree( 0x%lX )\n", (ULONG)hMem);
|
||||
|
||||
hreturned = 0;
|
||||
if (ISPOINTER(hMem)) /* POINTER */
|
||||
{
|
||||
RtlFreeHeap(GetProcessHeap(), 0, (PVOID)hMem);
|
||||
if(!RtlFreeHeap(GetProcessHeap(), 0, (PVOID)hMem))
|
||||
hMem = 0;
|
||||
}
|
||||
else /* HANDLE */
|
||||
|
@ -229,7 +231,8 @@ GlobalFree(HGLOBAL hMem)
|
|||
|
||||
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)
|
||||
{
|
||||
DPRINT1("Warning! GlobalFree(0x%X) Freeing a handle to a locked object.\n", hMem);
|
||||
|
@ -237,15 +240,17 @@ GlobalFree(HGLOBAL hMem)
|
|||
}
|
||||
|
||||
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());
|
||||
|
||||
hMem = 0;
|
||||
}
|
||||
return hMem;
|
||||
return hreturned;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -40,9 +40,15 @@
|
|||
*/
|
||||
HANDLE STDCALL HeapCreate(DWORD flags, DWORD dwInitialSize, DWORD dwMaximumSize)
|
||||
{
|
||||
|
||||
HANDLE hRet;
|
||||
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