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

Function omFreeKeptAddrFromBin

omalloc/omDebug.c:542–607  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

540}
541
542void omFreeKeptAddrFromBin(omBin bin)
543{
544 void* addr = om_KeptAddr;
545 void* prev_addr = NULL;
546 void* next_addr;
547 omTrackFlags_t flags;
548
549 while (addr != NULL)
550 {
551 next_addr = *((void**) addr);
552 if (omIsBinPageAddr(addr) && omGetTopBinOfAddr(addr) == bin)
553 {
554 if (prev_addr != NULL)
555 *((void**) prev_addr) = next_addr;
556 else
557 om_KeptAddr = next_addr;
558 if (addr == om_LastKeptAddr)
559 om_LastKeptAddr = prev_addr;
560 om_NumberOfKeptAddrs--;
561#ifdef OM_HAVE_TRACK
562 if (omIsTrackAddr(addr))
563 {
564 omMarkAsFreeTrackAddr(addr, 0, &flags, OM_FLR);
565 omFreeTrackAddr(addr);
566 }
567 else
568#endif
569 __omFree(addr);
570 addr = next_addr;
571 }
572 else
573 {
574 prev_addr = addr;
575 addr = next_addr;
576 }
577 }
578
579 addr = om_AlwaysKeptAddrs;
580 prev_addr = NULL;
581 while (addr != NULL)
582 {
583 next_addr = *((void**) addr);
584 if (omIsBinPageAddr(addr) && omGetTopBinOfAddr(addr) == bin)
585 {
586 if (prev_addr != NULL)
587 *((void**) prev_addr) = next_addr;
588 else
589 om_AlwaysKeptAddrs = next_addr;
590#ifdef OM_HAVE_TRACK
591 if (omIsTrackAddr(addr))
592 {
593 omMarkAsFreeTrackAddr(addr, 0, &flags, OM_FLR);
594 omFreeTrackAddr(addr);
595 }
596 else
597#endif
598 __omFree(addr);
599 addr = next_addr;

Callers 2

_omUnGetSpecBinFunction · 0.85
omMergeStickyBinIntoBinFunction · 0.85

Calls 2

omMarkAsFreeTrackAddrFunction · 0.85
omFreeTrackAddrFunction · 0.85

Tested by

no test coverage detected