[EMAIL PROTECTED] wrote:
Hi,
On Tue, Aug 12, 2008 at 08:05:49PM +0200, zhengda wrote:
+ char *name = NULL;
No need to initialize this -- the asprintf() will overwrite it anyways.
But isn't it always right to initialize a local variable to reduce the
possibility of getting bugs?
+ 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.
If asprintf() doesn't fail, the getenv() should be done unconditionally.
+ if (__asprintf (&name, "%s/%d", sock_servs, domain) > 0)
+ np = name;
I think you can print to np directly here...
I need to free the space afterwards.
If I use np directly, I'll not be able to figure out whether I should
free the memory because np might point to the environment variable.
Zheng Da