- Timestamp:
- Jun 9, 1999, 12:49:06 AM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/heap.cpp
r46 r62 67 67 curheap = new OS2Heap(hHeap, flOptions, dwInitialSize, dwMaximumSize); 68 68 if(curheap == NULL) { 69 69 O32_HeapDestroy(hHeap); 70 70 return(NULL); 71 71 } 72 72 if(curheap->getHeapHandle() == NULL) { 73 73 O32_HeapDestroy(hHeap); 74 74 delete curheap; 75 75 return(NULL); … … 146 146 //SvL: Only one process heap per process 147 147 if(processheap == NULL) { 148 149 150 151 152 153 154 155 148 //TODO: I haven't thought real hard about this. I added it just to make "hdr.exe" happy. 149 hHeap = O32_HeapCreate(HEAP_GENERATE_EXCEPTIONS, 1, 0x4000); 150 OS2ProcessHeap = new OS2Heap(hHeap, HEAP_GENERATE_EXCEPTIONS, 0x4000, 0); 151 if(OS2ProcessHeap == NULL) { 152 O32_HeapDestroy(hHeap); 153 return(NULL); 154 } 155 processheap = hHeap; 156 156 } 157 157 return(processheap); … … 165 165 166 166 if(processheap == NULL) { 167 168 167 if(GetProcessHeap() == NULL) 168 return(NULL); 169 169 } 170 170 if(fuFlags & LMEM_ZEROINIT) … … 201 201 202 202 if(OS2ProcessHeap->GetLockCnt((LPVOID)hMem) != 0) { 203 204 203 dprintf(("LocalFree, lock count != 0\n")); 204 return(hMem); //TODO: SetLastError 205 205 } 206 206 if(OS2ProcessHeap->Free(0, (LPVOID)hMem) == FALSE) { 207 207 return(hMem); //TODO: SetLastError 208 208 } 209 209 return NULL; //success … … 230 230 HLOCAL WIN32API LocalReAlloc(HLOCAL hMem, DWORD cbBytes, UINT fuFlags) 231 231 { 232 LPVOID lpMem; 233 234 dprintf(("KERNEL32: LocalReAlloc %X %d %X\n", hMem, cbBytes, fuFlags)); 235 //SvL: 8-8-'98: Notepad bugfix (assumes address is identical when new size < old size) 236 if(OS2ProcessHeap->Size(0, (LPVOID)hMem) > cbBytes) 237 return hMem; 238 239 lpMem = (LPVOID)O32_LocalAlloc(fuFlags, cbBytes); 240 memcpy(lpMem, (LPVOID)hMem, min(cbBytes, OS2ProcessHeap->Size(0, (LPVOID)hMem))); 232 HLOCAL hLocalNew; 233 LPVOID lpMem; 234 235 dprintf(("KERNEL32: LocalReAlloc %X %d %X\n", hMem, cbBytes, fuFlags)); 236 237 //SvL: 8-8-'98: Notepad bugfix (assumes address is identical when new size < old size) 238 if(OS2ProcessHeap->Size(0, (LPVOID)hMem) > cbBytes) 239 return hMem; 240 241 hLocalNew = LocalAlloc(fuFlags, cbBytes); 242 if (hLocalNew != 0) 243 { 244 lpMem = LocalLock(hLocalNew); 245 246 if (lpMem != NULL) /* copy memory if successful */ 247 memcpy(lpMem, 248 (LPVOID)hMem, 249 min(cbBytes, OS2ProcessHeap->Size(0, (LPVOID)hMem)) 250 ); 251 252 LocalUnlock(hLocalNew); 241 253 OS2ProcessHeap->Free(0, (LPVOID)hMem); 242 return((HLOCAL)lpMem); 254 } 255 return(hLocalNew); 243 256 } 244 257 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.