| 367 | |
| 368 | |
| 369 | void* 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 | |
| 409 | void omFreeTrackAddr(void* d_addr) |
| 410 | { |
no test coverage detected