On Thu, Jun 26, 2008 at 10:50 AM, Juan Lang <[EMAIL PROTECTED]> wrote:
>> The fix should be
>>    *Buffer = NULL;
>> not
>>    Buffer = NULL;
>> since p (in the tests) would still be valid after the NetApiBufferFree call.
>
> That's also not correct, as you'd be dereferencing an invalid pointer.
>  NetApiBufferFree takes a void *, not a void ** (unlike
> NetApiBufferAllocate).
>
> My question remains:  why does setting a local variable to NULL
> silence a Valgrind warning?  That sounds like a Valgrind bug to me.

Not that I know anything but it seems that HeapFree calls RtlFreeHeap
and RtlFreeHeap checks to make sure the pointer is not null before
trying to free it.  So explicitly setting it to null makes the erorr
go away.

Now trying to free a pointer a second time could maybe be considered
poor logic but I'll leave that up to wiser minds.

Best,
--John Klehm


Reply via email to