Paul Cochrane wrote: I've had a chance to look at this and the implementation looks quite good to me.
There's one thing that still bothers me. The snipped output is: > Event alias: aliasing "(ins)->next" with "ins2" > Also see events: [freed_arg][use_after_free] > At conditional (1): "ins2 != 0" taking true path > > 512 for (ins2 = ins->next; ins2; ins2 = ins2->next) { ... > Event freed_arg: Pointer "ins2" freed by function "subst_ins" [model] > Also see events: [alias][use_after_free] > > 536 subst_ins(unit, ins2, tmp, 1); There's "Also see events: [freed_arg][use_after_free]" and there's a line saying "Event freed_arg: ..." Then there's "Also see events: [alias][use_after_free]" and a line saying "Event alias: ..." This makes we wonder if there's any line saying "Event use_after_free: ..." in the report? Thanks, Ron