Changeset 3464 for trunk/src/kernel32/os2heap.cpp
- Timestamp:
- Apr 30, 2000, 6:31:47 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/os2heap.cpp
r2803 r3464 1 /* $Id: os2heap.cpp,v 1.1 4 2000-02-16 14:25:43sandervl Exp $ */1 /* $Id: os2heap.cpp,v 1.15 2000-04-30 16:31:47 sandervl Exp $ */ 2 2 3 3 /* … … 27 27 #include "vmutex.h" 28 28 #include "initterm.h" 29 #include <odin32validate.h> 29 30 30 31 #define DBG_LOCALLOG DBG_os2heap … … 181 182 HEAPELEM *helem = (HEAPELEM *)((char *)lpMem - sizeof(HEAPELEM)); 182 183 183 if(lpMem == NULL) 184 return(FALSE); 184 if((ULONG)lpMem > ADDRESS_SPACE_LIMIT) { 185 //SvL: Some apps lock and unlock gdi handles; just ignore this here 186 dprintf(("Lock: invalid address %x", lpMem)); 187 return FALSE; 188 } 189 190 if(lpMem == NULL) 191 return(FALSE); 185 192 186 193 if(helem->magic != MAGIC_NR_HEAP) 187 194 { 188 dprintf(("OS2Heap::Lock ERROR BAD HEAP POINTER:%X\n", lpMem));189 return FALSE;195 dprintf(("OS2Heap::Lock ERROR BAD HEAP POINTER:%X\n", lpMem)); 196 return FALSE; 190 197 } 191 198 … … 199 206 { 200 207 HEAPELEM *helem = (HEAPELEM *)((char *)lpMem - sizeof(HEAPELEM)); 208 209 if((ULONG)lpMem > ADDRESS_SPACE_LIMIT) { 210 //SvL: Some apps lock and unlock gdi handles; just ignore this here 211 dprintf(("Unlock: invalid address %x", lpMem)); 212 return FALSE; 213 } 201 214 202 215 if(lpMem == NULL) … … 223 236 224 237 if(lpMem == NULL) 225 return( FALSE);238 return(0); 226 239 227 240 if(helem->magic != MAGIC_NR_HEAP) 228 241 { 229 242 dprintf(("OS2Heap::GetFlags ERROR BAD HEAP POINTER:%X\n", lpMem)); 230 return FALSE;231 } 232 233 return(helem-> flags);243 return 0; 244 } 245 246 return(helem->lockCnt | (helem->flags << 8)); 234 247 } 235 248 //****************************************************************************** … … 239 252 HEAPELEM *helem = (HEAPELEM *)((char *)lpMem - sizeof(HEAPELEM)); 240 253 241 if(lpMem == NULL) 242 return(666); 254 if((ULONG)lpMem > ADDRESS_SPACE_LIMIT) { 255 //SvL: Some apps lock and unlock gdi handles; just ignore this here 256 dprintf(("GetLockCnt: invalid address %x", lpMem)); 257 return FALSE; 258 } 259 260 if(lpMem == NULL) 261 return(0); 243 262 244 263 if(helem->magic != MAGIC_NR_HEAP) 245 264 { 246 dprintf(("OS2Heap::GetLockCnt ERROR BAD HEAP POINTER:%X\n", lpMem));247 return FALSE;265 dprintf(("OS2Heap::GetLockCnt ERROR BAD HEAP POINTER:%X\n", lpMem)); 266 return 0; 248 267 } 249 268 … … 302 321 303 322 if(lpMem == NULL) { 304 dprintf(("OS2Heap::Free lpMem == NULL\n"));305 return(FALSE);323 dprintf(("OS2Heap::Free lpMem == NULL\n")); 324 return(FALSE); 306 325 } 307 326 /* verify lpMem address */ 308 327 if (lpMem >= (LPVOID)ulMaxAddr || lpMem < (LPVOID)0x10000) 309 328 { 310 dprintf(("OS2Heap::Free ERROR BAD HEAP POINTER:%X\n", lpMem));311 return FALSE;329 dprintf(("OS2Heap::Free ERROR BAD HEAP POINTER:%X\n", lpMem)); 330 return FALSE; 312 331 } 313 332 314 333 if(helem->magic != MAGIC_NR_HEAP) 315 334 { 316 dprintf(("OS2Heap::Free ERROR BAD HEAP POINTER:%X\n", lpMem));317 return FALSE;335 dprintf(("OS2Heap::Free ERROR BAD HEAP POINTER:%X\n", lpMem)); 336 return FALSE; 318 337 } 319 338 … … 327 346 328 347 if(helem->prev) 329 helem->prev->next = helem->next;348 helem->prev->next = helem->next; 330 349 if(helem->next) 331 helem->next->prev = helem->prev;350 helem->next->prev = helem->prev; 332 351 if(heapelem == helem) 333 heapelem = heapelem->next;352 heapelem = heapelem->next; 334 353 335 354 if(hmutex) { 336 hmutex->leave();355 hmutex->leave(); 337 356 } 338 357
Note:
See TracChangeset
for help on using the changeset viewer.