Andrew Haley wrote:
:
I've reworked the patch.
I tried to refactor the code to make it cleaner and easier to follow,
but I ended up touching so many places that it bacame a major change,
and there's no way I could possibly test it all, especially the special
cases for Solaris.
So, I backed off and produced this, the minimum patch. encoding_variant
and temp are malloc()d to the size that they need, and temp is realloc()d,
as you suggest.
This looks much better except the size when allocating encoding_variant.
If I read the patch correctly then encoding_variant is malloc'ed before
'p' is initialized (or 'p' might actually be null in the Solaris case
when not a euro locale). Do I have this right? strlen(temp)+1 would work
but would allocate a bit more than you need. A minor nit is that a
malloc failure will return without freeing temp but I wouldn't worry
about this because this is called once during startup and we won't get
too far if heap is completely exhausted.
-Alan.