On Apr 19, 2013, at 9:52 AM, Anna Zaks <[email protected]> wrote:

> 
> On Apr 19, 2013, at 2:45 AM, Anton Yartsev <[email protected]> wrote:
> 
>> On 29.03.2013 4:00, Anna Zaks wrote:
>>> I've committed the new callback. Looks like no email was sent out.. So just 
>>> look at r178310.
>> +static bool retTrue(const RefState *RS) {
>> +  return true;
>> +}
>> +
>> +static bool checkIfNewOrNewArrayFamily(const RefState *RS) {
>> +  return (RS->getAllocationFamily() == AF_CXXNewArray ||
>> +          RS->getAllocationFamily() == AF_CXXNew);
>> +}
>> ...........
>> +      if (RS->isAllocated() && CheckRefState(RS))
>>         State = State->remove<RegionState>(sym);
>>     }
>>   }
>> 
>> Anna, could you, please, clarify why we only process C++ families on const 
>> escape here?
>> 
> 
> Because we assume that the user can call 'delete' on a const pointer, but 
> cannot call 'free' on it.

As described in the commit message:

    [analyzer] Add support for escape of const pointers and use it to allow 
“newed” pointers to escape
    
    Add a new callback that notifies checkers when a const pointer escapes. 
Currently, this only works
    for const pointers passed as a top level parameter into a function. We need 
to differentiate the const
    pointers escape from regular escape since the content pointed by const 
pointer will not change;
    if it’s a file handle, a file cannot be closed; but delete is allowed on 
const pointers.
    
    This should suppress several false positives reported by the NewDelete 
checker on llvm codebase.

I think in your case, a content of const pointer escaping, we are expecting the 
other callback to get triggered. Since if a const pointer points to another 
pointer, which is non-const, the other pointer escapes, not const-escapes.

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

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

Reply via email to