aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libquadmath/ChangeLog5
-rw-r--r--libquadmath/printf/quadmath-printf.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog
index 71fbc2f..cc4bf88 100644
--- a/libquadmath/ChangeLog
+++ b/libquadmath/ChangeLog
@@ -1,3 +1,8 @@
+2011-02-28 Jakub Jelinek <jakub@redhat.com>
+
+ * printf/quadmath-printf.c (quadmath_snprintf): Make sure
+ that for size > 0 str is always zero terminated.
+
2011-02-20 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/47827
diff --git a/libquadmath/printf/quadmath-printf.c b/libquadmath/printf/quadmath-printf.c
index 750dc24..b70f432 100644
--- a/libquadmath/printf/quadmath-printf.c
+++ b/libquadmath/printf/quadmath-printf.c
@@ -256,7 +256,7 @@ quadmath_snprintf (char *str, size_t size, const char *format, ...)
qfp.fp = NULL;
qfp.str = str;
- qfp.size = size;
+ qfp.size = size ? size - 1 : 0;
qfp.len = 0;
qfp.file_p = 0;
@@ -265,7 +265,7 @@ quadmath_snprintf (char *str, size_t size, const char *format, ...)
else
__quadmath_printf_fp (&qfp, &info, (const void *const *)&fpnum_addr2);
- if (qfp.size)
+ if (size)
*qfp.str = '\0';
return qfp.len;