On Oct 29, 2012, at 20:32 , Anna Zaks <[email protected]> wrote: > > On Oct 29, 2012, at 4:55 PM, Jordan Rose wrote: > >> >> On Oct 29, 2012, at 16:19 , Jordan Rose <[email protected]> wrote: >> >>> >>> On Oct 29, 2012, at 15:51 , Anna Zaks <[email protected]> wrote: >>> >>>> +ExplodedNode *SimpleStreamChecker::reportLeaks(SymbolVector LeakedStreams, >>>> + CheckerContext &C) const { >>>> + ExplodedNode *Pred = C.getPredecessor(); >>>> + if (LeakedStreams.empty()) >>>> + return Pred; >>>> + >>>> + // Generate an intermediate node representing the leak point. >>>> + static SimpleProgramPointTag Tag("StreamChecker : Leak"); >>>> + ExplodedNode *ErrNode = C.addTransition(Pred->getState(), Pred, &Tag); >>>> + if (!ErrNode) >>>> + return Pred; >>> >>> Why generate an intermediate node at all? I feel like we could just >>> generate the transition in the caller and then report all the leaks here. >> >> Oops, actually this is a bug, even in the final version (next commit). Two >> addTransition calls = bifurcation. > > Two calls to addTransition does not mean that we introduce bifurcation. We > would have one node followed by the other one. Bifurcation is when one node > has two successors, which leads to exponential blow up.
Oops, I didn't notice that you explicitly specified the predecessor the second time. My bad.
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
