| 599 | #endif |
| 600 | |
| 601 | void omPrintTrackAddrInfo(FILE* fd, void* addr, int max_frames) |
| 602 | { |
| 603 | omTrackAddr d_addr = omOutAddr_2_TrackAddr(addr); |
| 604 | omAssume(d_addr->track > 0); |
| 605 | if (max_frames <= 0) return; |
| 606 | if (! (d_addr->flags & OM_FUSED)) |
| 607 | { |
| 608 | fputs(" freed\n",fd); |
| 609 | return; |
| 610 | } |
| 611 | |
| 612 | if (max_frames > OM_MAX_KEPT_FRAMES) max_frames = OM_MAX_KEPT_FRAMES; |
| 613 | |
| 614 | fputs(" allocated at ",fd); |
| 615 | if (! _omPrintBackTrace((void **)OM_ALLOC_FRAMES(d_addr), |
| 616 | (d_addr->track > 1 ? max_frames : 0), |
| 617 | fd, |
| 618 | OM_FLR_ARG(d_addr->alloc_file, d_addr->alloc_line, d_addr->alloc_r))) |
| 619 | fputs(" ??",fd); |
| 620 | if (d_addr->track > 1) |
| 621 | { |
| 622 | if (d_addr->track > 3 && ! (d_addr->flags & OM_FUSED)) |
| 623 | { |
| 624 | fputs("\n freed at ",fd); |
| 625 | if (! _omPrintBackTrace(OM_FREE_FRAMES(d_addr), |
| 626 | (d_addr->track > 4 ? max_frames : 0), |
| 627 | fd, |
| 628 | OM_FLR_ARG(d_addr->free_file, d_addr->free_line, d_addr->free_r))) |
| 629 | fputs(" ??",fd); |
| 630 | } |
| 631 | } |
| 632 | fputc('\n',fd); |
| 633 | fflush(fd); |
| 634 | } |
| 635 | |
| 636 | /******************************************************************* |
| 637 | * |
no test coverage detected