summaryrefslogtreecommitdiffstats
path: root/gettext-runtime/libasprintf
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2010-10-15 02:07:02 +0200
committerBruno Haible <bruno@clisp.org>2011-06-07 23:38:47 +0200
commit085a53c79ab62bcc35bb4377d9a03f90b3f9f41f (patch)
treec94fd43a688cc58f712ff3b3a2d776089698b062 /gettext-runtime/libasprintf
parent1d4c46994e1248b63aae1af4ca1b79320b19d4af (diff)
downloadexternal_gettext-085a53c79ab62bcc35bb4377d9a03f90b3f9f41f.zip
external_gettext-085a53c79ab62bcc35bb4377d9a03f90b3f9f41f.tar.gz
external_gettext-085a53c79ab62bcc35bb4377d9a03f90b3f9f41f.tar.bz2
vasnprintf: Don't set errno to 0.
Diffstat (limited to 'gettext-runtime/libasprintf')
-rw-r--r--gettext-runtime/libasprintf/ChangeLog7
-rw-r--r--gettext-runtime/libasprintf/vasnprintf.c4
2 files changed, 11 insertions, 0 deletions
diff --git a/gettext-runtime/libasprintf/ChangeLog b/gettext-runtime/libasprintf/ChangeLog
index e698309..7a13fdf 100644
--- a/gettext-runtime/libasprintf/ChangeLog
+++ b/gettext-runtime/libasprintf/ChangeLog
@@ -1,3 +1,10 @@
+2010-10-14 Bruno Haible <bruno@clisp.org>
+
+ vasnprintf: Don't set errno to 0.
+ * vasnprintf.c (VASNPRINTF): Save and restore errno around the block
+ that sets it to 0.
+ Reported by Gianluigi Tiesi <sherpya@netfarm.it>.
+
2010-06-04 Bruno Haible <bruno@clisp.org>
* gettext-0.18.1 released.
diff --git a/gettext-runtime/libasprintf/vasnprintf.c b/gettext-runtime/libasprintf/vasnprintf.c
index 8a07ca6..3dd8b3f 100644
--- a/gettext-runtime/libasprintf/vasnprintf.c
+++ b/gettext-runtime/libasprintf/vasnprintf.c
@@ -4598,6 +4598,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
TCHAR_T *fbp;
unsigned int prefix_count;
int prefixes[2] IF_LINT (= { 0 });
+ int orig_errno;
#if !USE_SNPRINTF
size_t tmp_length;
TCHAR_T tmpbuf[700];
@@ -4901,6 +4902,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
*(TCHAR_T *) (result + length) = '\0';
#endif
+ orig_errno = errno;
+
for (;;)
{
int count = -1;
@@ -5499,6 +5502,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
length += count;
break;
}
+ errno = orig_errno;
#undef pad_ourselves
#undef prec_ourselves
}