Compiler warnings

Andreas Ericsson ae at op5.se
Thu Oct 18 20:28:26 CEST 2007


Andreas Ericsson wrote:
> Ethan Galstad wrote:
>> Andreas Ericsson wrote:
>>> Ahoy.
>>>
>>> I was digging around trying to fix a bunch of compiler-warnings, and
>>> noticed that pretty much every invocation of my_free() resulted in
>>> about a million warnings, such as this:
>>>
>>> 	../xdata/xrddefault.c:190: warning: dereferencing type-punned
>>> 	pointer will break strict-aliasing rules
>>>
>>>
>>> Considering that not a single invocation of my_free() evaluates the
>>> return code of the function, a macro such as
>>>
>>> 	#define my_free(ptr) { if(ptr) { free(ptr); ptr = NULL; } }
>>>
>>> would do the trick, and also provide a slight performance improvement.
>>>
>>> Since a patch would be fairly huge, and I've kinda filled my quota
>>> for huge patches for today, the following sed-script will take care
>>> of the call-sites (requires sed 4.0.9 or later):
>>>
>>> 	sed -i 's/my_free[^&]*&\([^)]*\).*/my_free(\1);/' */*.c
>>>
>> Definitely a good idea.  I've committed this to CVS after some manual 
>> massaging post-sed.
>>
> 
> Thanks.
> 
>> Don't know why, but I get a SIGABRT if I don't comment out two my_free() 
>> statements in xdata/xodtemplate.c in the 
>> xodtemplate_get_inherited_string() function.
>>
> 
> I'll look into it.
> 

Hmm. I can't reproduce it, as I don't have a decent config with template
inheritance using + concat stuff. Have you got anything readily made to
share? I'll hack some up otherwise, but I'm not sure I'd get one that
could trigger it.

I'm fairly certain what's happening though. The caller passes the string
by reference, but we're free()'ing it as if it wasn't, so we're basically
calling free() on a pointer to the caller's stack frame. Bad thing.
Change them from

	my_free(this_value);

to

	my_free(*this_value);

and things might turn out ok. Otherwise, tar up your config and send me
what you've got and I'll see what I can do.

-- 
Andreas Ericsson                   andreas.ericsson at op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/




More information about the Developers mailing list