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

Function omMarkAsFreeTrackAddr

omalloc/omDebugTrack.c:369–407  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

367
368
369void* omMarkAsFreeTrackAddr(void* addr, int keep, omTrackFlags_t *flags, OM_FLR_DECL)
370{
371 omTrackAddr d_addr = omOutAddr_2_TrackAddr(addr);
372 omAssume(omIsTrackAddr(addr));
373
374 d_addr->next = (void*) -1;
375 if (d_addr->track > 2)
376 {
377 if (d_addr->flags & OM_FUSED)
378 {
379 memset(omTrackAddr_2_OutAddr(d_addr), OM_FREE_PATTERN, omTrackAddr_2_OutSize(d_addr));
380 if (d_addr->track > 3)
381 {
382#ifdef OM_TRACK_FILE_LINE
383 d_addr->free_line = l;
384 d_addr->free_file = f;
385#endif
386#ifdef OM_TRACK_RETURN
387 d_addr->free_r = r;
388#endif
389
390#ifdef OM_TRACK_BACKTRACE
391 if (d_addr->track > 4)
392 omGetBackTrace(d_addr->free_frames, FROM_FRAMES, OM_MAX_KEPT_FRAMES);
393#endif
394 }
395 }
396 else
397 {
398 omAssume(d_addr->flags & OM_FKEPT);
399 }
400 }
401 if (d_addr->flags & OM_FKEEP) *flags |= OM_FKEEP;
402 d_addr->flags &= ~OM_FUSED;
403 if (keep) d_addr->flags |= OM_FKEPT;
404 else d_addr->flags &= ~OM_FKEPT;
405
406 return(void*) d_addr;
407}
408
409void omFreeTrackAddr(void* d_addr)
410{

Callers 3

__omDebugFreeFunction · 0.85
omFreeKeptAddrFromBinFunction · 0.85
omFreeKeptAddrFunction · 0.85

Calls 3

omOutAddr_2_TrackAddrFunction · 0.85
omTrackAddr_2_OutSizeFunction · 0.85
omGetBackTraceFunction · 0.85

Tested by

no test coverage detected