projects
/
platform
/
upstream
/
gettext.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Imported Upstream version 0.19.7
[platform/upstream/gettext.git]
/
gettext-tools
/
libgettextpo
/
vasnprintf.c
diff --git
a/gettext-tools/libgettextpo/vasnprintf.c
b/gettext-tools/libgettextpo/vasnprintf.c
index
5267b1b
..
88332f0
100644
(file)
--- a/
gettext-tools/libgettextpo/vasnprintf.c
+++ b/
gettext-tools/libgettextpo/vasnprintf.c
@@
-1,5
+1,5
@@
/* vsprintf with automatic memory allocation.
/* vsprintf with automatic memory allocation.
- Copyright (C) 1999, 2002-201
3
Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002-201
5
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-1886,7
+1886,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
else
{
do
else
{
do
- result[length++] =
(unsigned char)
*cp++;
+ result[length++] = *cp++;
while (--n > 0);
}
}
while (--n > 0);
}
}
@@
-1957,15
+1957,14
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
abort ();
arg = a.arg[dp->width_arg_index].a.a_int;
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
abort ();
arg = a.arg[dp->width_arg_index].a.a_int;
+ width = arg;
if (arg < 0)
{
/* "A negative field width is taken as a '-' flag
followed by a positive field width." */
flags |= FLAG_LEFT;
if (arg < 0)
{
/* "A negative field width is taken as a '-' flag
followed by a positive field width." */
flags |= FLAG_LEFT;
- width =
(unsigned int) (-arg)
;
+ width =
-width
;
}
}
- else
- width = arg;
}
else
{
}
else
{
@@
-2073,8
+2072,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
characters = 0;
}
characters = 0;
}
- if (has_width && width > characters
- && !(dp->flags & FLAG_LEFT))
+ if (characters < width && !(dp->flags & FLAG_LEFT))
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
@@
-2127,8
+2125,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
}
# endif
}
# endif
- if (has_width && width > characters
- && (dp->flags & FLAG_LEFT))
+ if (characters < width && (dp->flags & FLAG_LEFT))
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
@@
-2201,8
+2198,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
characters = 0;
}
characters = 0;
}
- if (has_width && width > characters
- && !(dp->flags & FLAG_LEFT))
+ if (characters < width && !(dp->flags & FLAG_LEFT))
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
@@
-2255,8
+2251,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
}
# endif
}
# endif
- if (has_width && width > characters
- && (dp->flags & FLAG_LEFT))
+ if (characters < width && (dp->flags & FLAG_LEFT))
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
@@
-2329,8
+2324,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
characters = 0;
}
characters = 0;
}
- if (has_width && width > characters
- && !(dp->flags & FLAG_LEFT))
+ if (characters < width && !(dp->flags & FLAG_LEFT))
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
@@
-2383,8
+2377,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
}
# endif
}
# endif
- if (has_width && width > characters
- && (dp->flags & FLAG_LEFT))
+ if (characters < width && (dp->flags & FLAG_LEFT))
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
@@
-2435,15
+2428,14
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
abort ();
arg = a.arg[dp->width_arg_index].a.a_int;
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
abort ();
arg = a.arg[dp->width_arg_index].a.a_int;
+ width = arg;
if (arg < 0)
{
/* "A negative field width is taken as a '-' flag
followed by a positive field width." */
flags |= FLAG_LEFT;
if (arg < 0)
{
/* "A negative field width is taken as a '-' flag
followed by a positive field width." */
flags |= FLAG_LEFT;
- width =
(unsigned int) (-arg)
;
+ width =
-width
;
}
}
- else
- width = arg;
}
else
{
}
else
{
@@
-2573,8
+2565,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
characters = 0;
}
characters = 0;
}
- if (has_width && width > characters
- && !(dp->flags & FLAG_LEFT))
+ if (characters < width && !(dp->flags & FLAG_LEFT))
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
@@
-2635,8
+2626,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
}
}
}
}
- if (has_width && width > characters
- && (dp->flags & FLAG_LEFT))
+ if (characters < width && (dp->flags & FLAG_LEFT))
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
{
size_t n = width - characters;
ENSURE_ALLOCATION (xsum (length, n));
@@
-2827,8
+2817,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
/* w doesn't matter. */
w = 0;
/* w doesn't matter. */
w = 0;
- if (has_width && width > w
- && !(dp->flags & FLAG_LEFT))
+ if (w < width && !(dp->flags & FLAG_LEFT))
{
size_t n = width - w;
ENSURE_ALLOCATION (xsum (length, n));
{
size_t n = width - w;
ENSURE_ALLOCATION (xsum (length, n));
@@
-2911,8
+2900,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
length += tmpdst_len;
# endif
length += tmpdst_len;
# endif
- if (has_width && width > w
- && (dp->flags & FLAG_LEFT))
+ if (w < width && (dp->flags & FLAG_LEFT))
{
size_t n = width - w;
ENSURE_ALLOCATION (xsum (length, n));
{
size_t n = width - w;
ENSURE_ALLOCATION (xsum (length, n));
@@
-2939,17
+2927,16
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
{
arg_type type = a.arg[dp->arg_index].type;
int flags = dp->flags;
{
arg_type type = a.arg[dp->arg_index].type;
int flags = dp->flags;
- int has_width;
size_t width;
int has_precision;
size_t precision;
size_t tmp_length;
size_t width;
int has_precision;
size_t precision;
size_t tmp_length;
+ size_t count;
DCHAR_T tmpbuf[700];
DCHAR_T *tmp;
DCHAR_T *pad_ptr;
DCHAR_T *p;
DCHAR_T tmpbuf[700];
DCHAR_T *tmp;
DCHAR_T *pad_ptr;
DCHAR_T *p;
- has_width = 0;
width = 0;
if (dp->width_start != dp->width_end)
{
width = 0;
if (dp->width_start != dp->width_end)
{
@@
-2960,15
+2947,14
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
abort ();
arg = a.arg[dp->width_arg_index].a.a_int;
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
abort ();
arg = a.arg[dp->width_arg_index].a.a_int;
+ width = arg;
if (arg < 0)
{
/* "A negative field width is taken as a '-' flag
followed by a positive field width." */
flags |= FLAG_LEFT;
if (arg < 0)
{
/* "A negative field width is taken as a '-' flag
followed by a positive field width." */
flags |= FLAG_LEFT;
- width =
(unsigned int) (-arg)
;
+ width =
-width
;
}
}
- else
- width = arg;
}
else
{
}
else
{
@@
-2978,7
+2964,6
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
width = xsum (xtimes (width, 10), *digitp++ - '0');
while (digitp != dp->width_end);
}
width = xsum (xtimes (width, 10), *digitp++ - '0');
while (digitp != dp->width_end);
}
- has_width = 1;
}
has_precision = 0;
}
has_precision = 0;
@@
-3354,11
+3339,14
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
abort ();
# endif
}
abort ();
# endif
}
+
/* The generated string now extends from tmp to p, with the
zero padding insertion point being at pad_ptr. */
/* The generated string now extends from tmp to p, with the
zero padding insertion point being at pad_ptr. */
- if (has_width && p - tmp < width)
+ count = p - tmp;
+
+ if (count < width)
{
{
- size_t pad = width -
(p - tmp)
;
+ size_t pad = width -
count
;
DCHAR_T *end = p + pad;
if (flags & FLAG_LEFT)
DCHAR_T *end = p + pad;
if (flags & FLAG_LEFT)
@@
-3391,28
+3379,26
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
p = end;
}
p = end;
}
- {
- size_t count = p - tmp;
+ count = p - tmp;
-
if (count >= tmp_length)
-
/* tmp_length was incorrectly calculated - fix the
-
code above! */
-
abort ();
+ if (count >= tmp_length)
+ /* tmp_length was incorrectly calculated - fix the
+ code above! */
+ abort ();
-
/* Make room for the result. */
-
if (count >= allocated - length)
-
{
-
size_t n = xsum (length, count);
+ /* Make room for the result. */
+ if (count >= allocated - length)
+ {
+ size_t n = xsum (length, count);
-
ENSURE_ALLOCATION (n);
-
}
+ ENSURE_ALLOCATION (n);
+ }
- /* Append the result. */
- memcpy (result + length, tmp, count * sizeof (DCHAR_T));
- if (tmp != tmpbuf)
- free (tmp);
- length += count;
- }
+ /* Append the result. */
+ memcpy (result + length, tmp, count * sizeof (DCHAR_T));
+ if (tmp != tmpbuf)
+ free (tmp);
+ length += count;
}
#endif
#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
}
#endif
#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL
@@
-3446,8
+3432,8
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
arg_type type = a.arg[dp->arg_index].type;
# endif
int flags = dp->flags;
arg_type type = a.arg[dp->arg_index].type;
# endif
int flags = dp->flags;
- int has_width;
size_t width;
size_t width;
+ size_t count;
int has_precision;
size_t precision;
size_t tmp_length;
int has_precision;
size_t precision;
size_t tmp_length;
@@
-3456,7
+3442,6
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
DCHAR_T *pad_ptr;
DCHAR_T *p;
DCHAR_T *pad_ptr;
DCHAR_T *p;
- has_width = 0;
width = 0;
if (dp->width_start != dp->width_end)
{
width = 0;
if (dp->width_start != dp->width_end)
{
@@
-3467,15
+3452,14
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
abort ();
arg = a.arg[dp->width_arg_index].a.a_int;
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
abort ();
arg = a.arg[dp->width_arg_index].a.a_int;
+ width = arg;
if (arg < 0)
{
/* "A negative field width is taken as a '-' flag
followed by a positive field width." */
flags |= FLAG_LEFT;
if (arg < 0)
{
/* "A negative field width is taken as a '-' flag
followed by a positive field width." */
flags |= FLAG_LEFT;
- width =
(unsigned int) (-arg)
;
+ width =
-width
;
}
}
- else
- width = arg;
}
else
{
}
else
{
@@
-3485,7
+3469,6
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
width = xsum (xtimes (width, 10), *digitp++ - '0');
while (digitp != dp->width_end);
}
width = xsum (xtimes (width, 10), *digitp++ - '0');
while (digitp != dp->width_end);
}
- has_width = 1;
}
has_precision = 0;
}
has_precision = 0;
@@
-3925,9
+3908,9
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
digits without trailing zeroes. */
if (exponent >= 0)
{
digits without trailing zeroes. */
if (exponent >= 0)
{
- size_t count = exponent + 1;
+ size_t
e
count = exponent + 1;
/* Note: count <= precision = ndigits. */
/* Note: count <= precision = ndigits. */
- for (;
count > 0;
count--)
+ for (;
ecount > 0; e
count--)
*p++ = digits[--ndigits];
if ((flags & FLAG_ALT) || ndigits > nzeroes)
{
*p++ = digits[--ndigits];
if ((flags & FLAG_ALT) || ndigits > nzeroes)
{
@@
-3941,10
+3924,10
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
}
else
{
}
else
{
- size_t count = -exponent - 1;
+ size_t
e
count = -exponent - 1;
*p++ = '0';
*p++ = decimal_point_char ();
*p++ = '0';
*p++ = decimal_point_char ();
- for (;
count > 0;
count--)
+ for (;
ecount > 0; e
count--)
*p++ = '0';
while (ndigits > nzeroes)
{
*p++ = '0';
while (ndigits > nzeroes)
{
@@
-4395,9
+4378,9
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
digits without trailing zeroes. */
if (exponent >= 0)
{
digits without trailing zeroes. */
if (exponent >= 0)
{
- size_t count = exponent + 1;
- /* Note: count <= precision = ndigits. */
- for (;
count > 0;
count--)
+ size_t
e
count = exponent + 1;
+ /* Note:
e
count <= precision = ndigits. */
+ for (;
ecount > 0; e
count--)
*p++ = digits[--ndigits];
if ((flags & FLAG_ALT) || ndigits > nzeroes)
{
*p++ = digits[--ndigits];
if ((flags & FLAG_ALT) || ndigits > nzeroes)
{
@@
-4411,10
+4394,10
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
}
else
{
}
else
{
- size_t count = -exponent - 1;
+ size_t
e
count = -exponent - 1;
*p++ = '0';
*p++ = decimal_point_char ();
*p++ = '0';
*p++ = decimal_point_char ();
- for (;
count > 0;
count--)
+ for (;
ecount > 0; e
count--)
*p++ = '0';
while (ndigits > nzeroes)
{
*p++ = '0';
while (ndigits > nzeroes)
{
@@
-4542,9
+4525,11
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
/* The generated string now extends from tmp to p, with the
zero padding insertion point being at pad_ptr. */
/* The generated string now extends from tmp to p, with the
zero padding insertion point being at pad_ptr. */
- if (has_width && p - tmp < width)
+ count = p - tmp;
+
+ if (count < width)
{
{
- size_t pad = width -
(p - tmp)
;
+ size_t pad = width -
count
;
DCHAR_T *end = p + pad;
if (flags & FLAG_LEFT)
DCHAR_T *end = p + pad;
if (flags & FLAG_LEFT)
@@
-4577,36
+4562,36
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
p = end;
}
p = end;
}
- {
- size_t count = p - tmp;
+ count = p - tmp;
-
if (count >= tmp_length)
-
/* tmp_length was incorrectly calculated - fix the
-
code above! */
-
abort ();
+ if (count >= tmp_length)
+ /* tmp_length was incorrectly calculated - fix the
+ code above! */
+ abort ();
-
/* Make room for the result. */
-
if (count >= allocated - length)
-
{
-
size_t n = xsum (length, count);
+ /* Make room for the result. */
+ if (count >= allocated - length)
+ {
+ size_t n = xsum (length, count);
-
ENSURE_ALLOCATION (n);
-
}
+ ENSURE_ALLOCATION (n);
+ }
- /* Append the result. */
- memcpy (result + length, tmp, count * sizeof (DCHAR_T));
- if (tmp != tmpbuf)
- free (tmp);
- length += count;
- }
+ /* Append the result. */
+ memcpy (result + length, tmp, count * sizeof (DCHAR_T));
+ if (tmp != tmpbuf)
+ free (tmp);
+ length += count;
}
#endif
else
{
arg_type type = a.arg[dp->arg_index].type;
int flags = dp->flags;
}
#endif
else
{
arg_type type = a.arg[dp->arg_index].type;
int flags = dp->flags;
-#if !
USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !
DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
int has_width;
int has_width;
+#endif
+#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
size_t width;
#endif
#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION
size_t width;
#endif
#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION
@@
-4635,8
+4620,10
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
TCHAR_T *tmp;
#endif
TCHAR_T *tmp;
#endif
-#if !
USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !
DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
+#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
has_width = 0;
has_width = 0;
+#endif
+#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
width = 0;
if (dp->width_start != dp->width_end)
{
width = 0;
if (dp->width_start != dp->width_end)
{
@@
-4647,15
+4634,14
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
abort ();
arg = a.arg[dp->width_arg_index].a.a_int;
if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
abort ();
arg = a.arg[dp->width_arg_index].a.a_int;
+ width = arg;
if (arg < 0)
{
/* "A negative field width is taken as a '-' flag
followed by a positive field width." */
flags |= FLAG_LEFT;
if (arg < 0)
{
/* "A negative field width is taken as a '-' flag
followed by a positive field width." */
flags |= FLAG_LEFT;
- width =
(unsigned int) (-arg)
;
+ width =
-width
;
}
}
- else
- width = arg;
}
else
{
}
else
{
@@
-4665,7
+4651,9
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
width = xsum (xtimes (width, 10), *digitp++ - '0');
while (digitp != dp->width_end);
}
width = xsum (xtimes (width, 10), *digitp++ - '0');
while (digitp != dp->width_end);
}
+#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION
has_width = 1;
has_width = 1;
+#endif
}
#endif
}
#endif
@@
-4805,7
+4793,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
{
const FCHAR_T *mp = dp->width_start;
do
{
const FCHAR_T *mp = dp->width_start;
do
- *fbp++ =
(unsigned char)
*mp++;
+ *fbp++ = *mp++;
while (--n > 0);
}
}
while (--n > 0);
}
}
@@
-4826,7
+4814,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
{
const FCHAR_T *mp = dp->precision_start;
do
{
const FCHAR_T *mp = dp->precision_start;
do
- *fbp++ =
(unsigned char)
*mp++;
+ *fbp++ = *mp++;
while (--n > 0);
}
}
while (--n > 0);
}
}
@@
-5153,7
+5141,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
size_t tmp_length =
MAX_ROOM_NEEDED (&a, dp->arg_index,
dp->conversion, type, flags,
size_t tmp_length =
MAX_ROOM_NEEDED (&a, dp->arg_index,
dp->conversion, type, flags,
-
has_width ? width : 0
,
+
width
,
has_precision,
precision, pad_ourselves);
has_precision,
precision, pad_ourselves);
@@
-5191,18
+5179,21
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
/* SNPRINTF or sprintf failed. Save and use the errno
that it has set, if any. */
int saved_errno = errno;
/* SNPRINTF or sprintf failed. Save and use the errno
that it has set, if any. */
int saved_errno = errno;
+ if (saved_errno == 0)
+ {
+ if (dp->conversion == 'c' || dp->conversion == 's')
+ saved_errno = EILSEQ;
+ else
+ saved_errno = EINVAL;
+ }
if (!(result == resultbuf || result == NULL))
free (result);
if (buf_malloced != NULL)
free (buf_malloced);
CLEANUP ();
if (!(result == resultbuf || result == NULL))
free (result);
if (buf_malloced != NULL)
free (buf_malloced);
CLEANUP ();
- errno =
- (saved_errno != 0
- ? saved_errno
- : (dp->conversion == 'c' || dp->conversion == 's'
- ? EILSEQ
- : EINVAL));
+
+ errno = saved_errno;
return NULL;
}
return NULL;
}
@@
-5391,7
+5382,7
@@
VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
tmpsrc += count;
tmpdst += count;
for (n = count; n > 0; n--)
tmpsrc += count;
tmpdst += count;
for (n = count; n > 0; n--)
- *--tmpdst =
(unsigned char)
*--tmpsrc;
+ *--tmpdst = *--tmpsrc;
}
}
#endif
}
}
#endif