Hello,

thanks for you mail. You are right my plugin returns a 'false' warning
on your case. That should be possible to handle this case but it needs
some search: when parsing func,we should request to look at the Guard
constructor (either by inserting a new pass or maybe by using LTO (but I
should look deeper at this)) to check if there is a test or no.

For the moment my plugin's 'view' is limited to a single function but
that should be something to improve.

Pierre Vittet

On 12/08/2011 18:00, Jonathan Wakely wrote:
> On 12 August 2011 15:54, Pierre Vittet wrote:
>>
>> For the moment, the plugin has only be tested on C code, this might
>> works with only few changes for C++.
> 
> Would your example tests for grub warn about the following C++ code?
> 
> struct Guard {
>     Guard(void* p) : p(p) { if (!p) throw std::bad_alloc(); }
>     ~Guard() { grub_free(p); }
>     void* p;
> };
> 
> void func(grub_size_t n)
> {
>     Guard g(grub_malloc(n));
>     // do something with g.p
> }
> 
> For it to be useful for C++ it would be necessary to not warn about that code.
> 

Reply via email to