At Wed, 13 Aug 2008 12:41:12 +0200,
zhengda wrote:
+ if (__asprintf (&name, "SOCK_SERV_%d", domain) > 0)
+ {
+ np = getenv (name);
+ __free (name);
+ }
You need to check whether asprintf() returns an error code (-1), meaning
memory allocation failed, and handle it accordingly -- just like you
handled failure with the explicit malloc() in your original code.
as I understand from the manual of asprintf, asprintf always returns -1
if there is some error.
RETURN VALUE
When successful, these functions return the number of bytes
printed,
just like sprintf(3). If memory allocation wasn't possible,
or some
other error occurs, these functions will return -1, and the
contents of
strp is undefined.
Check if the result is != -1, not > 0, which has a different meaning.
If asprintf() doesn't fail, the getenv() should be done unconditionally.
+ if (__asprintf (&name, "%s/%d", sock_servs, domain) > 0)
+ np = name;
Here too.