apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aaron Bannert <aa...@clove.org>
Subject Re: use of malloc in dso.c instead of apr_palloc?
Date Sat, 11 Aug 2001 18:47:28 GMT
On Sun, Aug 12, 2001 at 02:09:51AM -0400, Sterling Hughes wrote:
> On Sat, 11 Aug 2001, Aaron Bannert wrote:
> > On Sat, Aug 11, 2001 at 12:25:11PM -0400, Sterling Hughes wrote:
> > >
> > >     Well, as the overly long title suggests, is there any reason that
> > >     malloc() is used in dso.c (unix and aix)?  apr_palloc() seems
> > >     fine for these purposes (temporary string).  Also, as a side
> > >     note, sizeof(char) is used in the allocation, which is extreaneous,
> > >     because a char is always equivalent to one base unit of memory
> > >     (well, at least that's how I interpret ANSII).
> >
> > If I remember my compiler class correctly, sizeof() gives a constant scalar
> > at compile-time. Any decent compiler will perform constant folding on
> > expressions like (sizeof(char)*12) before producing object code. This means
> > you should feel free to use sizeof() liberally if it helps readability.
> >
> 
>     I know gcc should optimize this out (so should most other
>     compilers), just like a = 12 * 12 is translated to a = 144.
> 
>     Its more of a stylistic note, as:
> 
>     malloc(sizeof(char)*(strlen(str)+2));
> 
>     doesn't look as nice as:
> 
>     malloc(strlen(str) + 2);
> 
>     since the sizeof(char) will never provide any functional benefits
>     (no it won't hurt anything, but...)
> 
>     But all this was really an aside from the main point, should
>     malloc() be used? :)

Since these variables are only temporary strings, I see no reason why
they aren't just allocated on the stack. In both cases we're simply
prepending an underscore to the original string.

Also, and I'm glad you pointed this out, we might want to do some
buffer-overflow checking, like strlen ==> strnlen, and sprintf ==> snprintf.
Does APR have any globally defined maximum string lengths we could
use for this?

-aaron

Mime
View raw message