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.

> 

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to