From: Paul Eggert Date: Sat, 27 Sep 2003 05:11:56 +0000 (+0000) Subject: * error.c (error_tail): Move some declarations X-Git-Tag: cvs-readonly~4438 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;h=30a788ee9d00940a28fb8b78da232cd5ade3c505;p=gnulib.git * error.c (error_tail): Move some declarations into inner scope where the local variables are used. --- diff --git a/lib/ChangeLog b/lib/ChangeLog index 987ae0a58..dea641cd0 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,8 @@ +2003-09-26 Jim Meyering + + * error.c (error_tail): Move some declarations + into inner scope where the local variables are used. + 2003-09-26 Bruno Haible * stpncpy.h (gnu_stpncpy): New declaration. @@ -8,10 +13,13 @@ * error.c (SIZE_MAX) [!defined SIZE_MAX]: Define. (error_tail): Do not loop, reallocating temporary buffer, since - the original size is big enough. This avoids one potential size - overflow calculation. Check for size overflow when calculating - temporary buffer size. Free temporary buffer when done, if - it was allocated with malloc; this closes a memory leak. + the output cannot contain more wide characters than the input + contains bytes, the size must be big enough already. This avoids + one potential size overflow calculation. Check for size overflow + when calculating temporary buffer size. Free temporary buffer + when done, if it was allocated with malloc; this plugs a memory + leak. Remove casts from void * to pointers, that are no longer + needed now that we're assuming C89 or better. Merge error changes from glibc. diff --git a/lib/error.c b/lib/error.c index 1c74a14fe..16228c413 100644 --- a/lib/error.c +++ b/lib/error.c @@ -147,9 +147,6 @@ error_tail (int status, int errnum, const char *message, va_list args) # define ALLOCA_LIMIT 2000 size_t len = strlen (message) + 1; const wchar_t *wmessage = L"out of memory"; - mbstate_t st; - size_t res; - const char *tmp; wchar_t *wbuf = (len < ALLOCA_LIMIT ? (void *) alloca (len * sizeof *wbuf) : len <= SIZE_MAX / sizeof *wbuf @@ -158,8 +155,10 @@ error_tail (int status, int errnum, const char *message, va_list args) if (wbuf) { + size_t res; + mbstate_t st; + const char *tmp = message; memset (&st, '\0', sizeof (st)); - tmp =message; res = mbsrtowcs (wbuf, &tmp, len, &st); wmessage = res == (size_t) -1 ? L"???" : wbuf; }