On Mar 9, 2008, at 10:00 PM, Wayne Davison wrote:
On Sun, Mar 09, 2008 at 08:27:25PM -0400, Jeff Johnson wrote:
Using xmalloc just opens up a can-of-worms while lusers fuss about
non-gcc compiler extension portability.
Aha, I had failed to notice that the "? :" bit was a gcc extension.
What I don't like is that normal users get some memory functions that
are fatal if they use gcc, while all others get non-fatal functions.
Perhaps the default should be for all normal compiles to get the non-
fatal functions, and then anyone that wanted to use the current gcc
defines could set something extra (such as -DFATAL_MEM).
Very good point. OTOH, I don't understand why some lusers are permitted
vasprintf and strlcpy, while others have to hobble along with
alternatives.
One other reason I care about this is that I think the various bits of
code that are doing a strdup()-like action should be using a strdup()-
like call, not each one having their own set of strlen/malloc/strcpy
calls. It's clearer and a bit safer.
Yup. Way too much C developer time is spent fussing with malloc'ing
strings.
I'm attaching a patch that adds the extra FATAL_MEM requirement, and
then uses xstrdup() in a few places (which would mean that strdup() is
being used for normal popt users).
I'm still considering switching to xstrdup, likely used
inconsistently atm.
I was also working on changing some code to use your newly-added
stpcpy() function, so I included that work too. Some of the changes
are optimizations to avoid a strlen() call (when we can easily compute
the length via subtraction) and a fix for a potential memory leak if
realloc() returns NULL.
Nice. I optimized away a few variables, and rewrote findProgramPath,
while
adding your patch.
See what you think. I sometimes regret later what seems clever atm.
Off to waste some more development time malloc'ing strings ;-)
73 de Jeff
______________________________________________________________________
POPT Library http://rpm5.org
Developer Communication List [email protected]