[patch] Add Logging Support for SID Components
Dave Brolley
brolley@redhat.com
Mon Jun 9 17:03:00 GMT 2003
Frank Ch. Eigler wrote:
>The new version seems to have at least one actual problem though:
>the way that the buffer array is managed. Its allocation/deallocation
>strategy should be consistent (probably "new char[]" and "delete[] char")
>regardless of the availability of the various *sprintf variants. It should
>probably not even be in #if/#endif markers. The new code appears to be
>able to hit free() even though malloc() was never called.
>
>
The piece of information that you're probably missing is that vasprintf
automatically allocates a buffer of the proper size each time it is
called and it uses malloc. Thus free () is only called when using
vasprintf (! HAVE_VSNPRINTF && HAVE_VASPRINTF). Otherwise
(HAVE_VSNPRINTF || ! HAVE_VAPRINTF) a persistent buffer is used which
can be grown if necessary only when vsnprintf is used. I chose to use
new/delete here since I had a choice.
I have reviewed the code again and believe that it is correct. I can get
the call to free() out of #if/#endif if I allocate a buffer everytime
for all alternatives using malloc, but conditional compilation would
still be necessary for the allocations/growth.
Let me know if you feel these changes are necessary.
Thanks,
Dave
More information about the Sid
mailing list