MCPcopy Create free account
hub / github.com/Singular/Singular / __omDebugFree

Function __omDebugFree

omalloc/omDebug.c:465–540  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

463}
464
465static void __omDebugFree(void* addr, void* size_bin, omTrackFlags_t flags, OM_FLR_DECL)
466{
467 omBin bin = NULL;
468
469 if (addr == NULL || ((flags & OM_FSIZE) && size_bin == NULL)) return;
470 if (om_Opts.Keep > 0)
471 {
472#ifdef OM_HAVE_TRACK
473 if (omIsTrackAddr(addr))
474 addr = omMarkAsFreeTrackAddr(addr, 1, &flags, OM_FLR_VAL);
475#endif
476 bin = omGetOrigSpecBinOfAddr(addr);
477 if (bin != NULL)
478 {
479 omSpecBin s_bin = omFindInGList(om_SpecBin, next, bin, (unsigned long) bin);
480 omAssume(s_bin != NULL);
481 (s_bin->ref)++;
482 }
483
484 if (flags & OM_FKEEP)
485 {
486 *((void**) addr) = om_AlwaysKeptAddrs;
487 om_AlwaysKeptAddrs = addr;
488 return;
489 }
490
491 if (om_NumberOfKeptAddrs)
492 {
493 omAssume(om_KeptAddr != NULL && om_LastKeptAddr != NULL &&
494 ((om_NumberOfKeptAddrs == 1 && om_LastKeptAddr == om_KeptAddr) ||
495 (om_NumberOfKeptAddrs != 1 && om_LastKeptAddr != om_KeptAddr)));
496 om_NumberOfKeptAddrs++;
497 *((void**) om_LastKeptAddr) = addr;
498 om_LastKeptAddr = addr;
499 *((void**) addr) = NULL;
500 }
501 else
502 {
503 om_NumberOfKeptAddrs = 1;
504 om_LastKeptAddr = addr;
505 om_KeptAddr = addr;
506 *((void**) om_LastKeptAddr) = NULL;
507 }
508
509 if (om_NumberOfKeptAddrs > om_Opts.Keep)
510 {
511 omError_t status = omDoCheckAddr(om_KeptAddr, NULL, OM_FKEPT, om_Opts.MinCheck,
512 omError_MemoryCorrupted, OM_FLR_VAL);
513 addr = om_KeptAddr;
514 if (addr!=NULL) om_KeptAddr = *((void**) addr);
515 om_NumberOfKeptAddrs--;
516 if (status != omError_NoError) return;
517 }
518 else
519 return;
520
521 bin = omGetOrigSpecBinOfAddr(addr);
522 }

Callers 2

_omDebugFreeFunction · 0.85
__omDebugReallocFunction · 0.85

Calls 5

omMarkAsFreeTrackAddrFunction · 0.85
omGetOrigSpecBinOfAddrFunction · 0.85
omDoCheckAddrFunction · 0.85
omFreeTrackAddrFunction · 0.85
omUnGetSpecBinFunction · 0.85

Tested by

no test coverage detected