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. > + 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. 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... -antrik-