Hi! On Mon, 15 Aug 2011 22:10:07 +0200, Jonathan Neuschäfer <j.neuschae...@gmx.net> wrote: > * libshouldbeinlibc/localhost.c (localhost): assign the return value > of realloc to a temporary variable to avoid losing the old value of > buf in the case of realloc failing. > --- > libshouldbeinlibc/localhost.c | 21 ++++++++++++++------- > 1 files changed, 14 insertions(+), 7 deletions(-) > > diff --git a/libshouldbeinlibc/localhost.c b/libshouldbeinlibc/localhost.c > index f0c6754..f21f970 100644 > --- a/libshouldbeinlibc/localhost.c > +++ b/libshouldbeinlibc/localhost.c > @@ -39,18 +39,25 @@ localhost () > errno = 0; > > if (buf) { > + char *new; > buf_len += buf_len; > - buf = realloc (buf, buf_len); > + new = realloc (buf, buf_len); > + if (! new) > + {
Am I being dense (which is entirely possible), or did you mean to ``free (buf)'' here, or what is the intent here? > + errno = ENOMEM; > + return 0; > + } > + else > + buf = new; > } else { > buf_len = 128; /* Initial guess */ > buf = malloc (buf_len); > + if (! buf) > + { > + errno = ENOMEM; > + return 0; > + } > } > - > - if (! buf) > - { > - errno = ENOMEM; > - return 0; > - } > } while ((gethostname(buf, buf_len) == 0 && !memchr (buf, '\0', > buf_len)) > || errno == ENAMETOOLONG); > Grüße, Thomas
pgpGZq7hAKeQO.pgp
Description: PGP signature