| 248 | } |
| 249 | |
| 250 | void* omReallocSizeFromSystem(void* addr, size_t oldsize, size_t newsize) |
| 251 | { |
| 252 | void* res; |
| 253 | |
| 254 | /*oldsize=omSizeOfLargeAddr(addr);*/ |
| 255 | res = OM_REALLOC_FROM_SYSTEM(addr, newsize); |
| 256 | if (res == NULL) |
| 257 | { |
| 258 | OM_MEMORY_LOW_HOOK(); |
| 259 | /* Can do a realloc again: manpage reads: |
| 260 | "If realloc() fails the original block is left untouched - |
| 261 | it is not freed or moved." */ |
| 262 | res = OM_REALLOC_FROM_SYSTEM(addr, newsize); |
| 263 | if (res == NULL) |
| 264 | { |
| 265 | OM_OUT_OF_MEMORY_HOOK(); |
| 266 | /* should never get here */ |
| 267 | omAssume(0); |
| 268 | exit(1); |
| 269 | } |
| 270 | } |
| 271 | /*newsize=omSizeOfAddr(res);*/ |
| 272 | |
| 273 | #ifndef OM_NDEBUG |
| 274 | if (((unsigned long) res) + newsize > om_MaxAddr) |
| 275 | om_MaxAddr = ((unsigned long) res) + newsize; |
| 276 | if (((unsigned long) res) < om_MinAddr) |
| 277 | om_MinAddr = ((unsigned long) res); |
| 278 | #endif |
| 279 | |
| 280 | om_Info.CurrentBytesFromMalloc += (long) newsize - (long) oldsize; |
| 281 | |
| 282 | |
| 283 | if (om_Info.CurrentBytesFromMalloc > om_Info.MaxBytesFromMalloc) |
| 284 | { |
| 285 | om_Info.MaxBytesFromMalloc = om_Info.CurrentBytesFromMalloc; |
| 286 | #if defined(OM_HAVE_VALLOC_MMAP) && defined(OM_MALLOC_MAX_BYTES_SYSTEM) |
| 287 | if (om_Info.CurrentBytesFromValloc + OM_MALLOC_MAX_BYTES_SYSTEM > om_Info.MaxBytesSystem) |
| 288 | om_Info.MaxBytesSystem = om_Info.CurrentBytesFromValloc + OM_MALLOC_MAX_BYTES_SYSTEM; |
| 289 | #endif |
| 290 | #if defined(HAVE_SBRK) && !defined(OM_MALLOC_MAX_BYTES_SBRK) |
| 291 | if (om_Info.MaxBytesFromMalloc |
| 292 | #ifndef OM_HAVE_VALLOC_MMAP |
| 293 | + om_Info.CurrentBytesFromValloc |
| 294 | #endif |
| 295 | > om_Info.MaxBytesSbrk) |
| 296 | { |
| 297 | om_Info.MaxBytesSbrk = (unsigned long) sbrk(0) - om_SbrkInit; |
| 298 | } |
| 299 | #endif |
| 300 | } |
| 301 | |
| 302 | OM_REALLOC_HOOK(oldsize, newsize); |
| 303 | return res; |
| 304 | } |
| 305 | |
| 306 | void omFreeToSystem(void* addr) |
| 307 | { |
no test coverage detected