summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2008-12-12 12:12:11 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2008-12-12 12:12:11 +0000
commitdaf195f4bb09d375fb917ef8de82957785917c4f (patch)
treeb4775c6da85bd26f4ab30539823b1e652ec52702
parente6c5a32a307cd2be7ede8dbe17c5171fc71e1be4 (diff)
downloadmpfr-daf195f4bb09d375fb917ef8de82957785917c4f.tar.gz
vasprintf.c: avoid a possible gcc 4.1.2 bug with -ftrapv.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@5718 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r--vasprintf.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/vasprintf.c b/vasprintf.c
index b5fb26312..414e6c1ca 100644
--- a/vasprintf.c
+++ b/vasprintf.c
@@ -86,6 +86,7 @@ static const char num_to_text[] = "0123456789abcdef";
do { \
while (*(format)) \
{ \
+ int _i; \
switch (*(format)) \
{ \
case '0': \
@@ -100,8 +101,10 @@ static const char num_to_text[] = "0123456789abcdef";
case '9': \
MPFR_ASSERTN (specinfo.field < INT_MAX / 10); \
specinfo.field *= 10; \
- MPFR_ASSERTN (specinfo.field < INT_MAX - *(format) + '0'); \
- specinfo.field += *(format) - '0'; \
+ _i = *(format) - '0'; \
+ MPFR_ASSERTN (_i >= 0 && _i <= 9); \
+ MPFR_ASSERTN (specinfo.field <= INT_MAX - _i); \
+ specinfo.field += _i; \
++(format); \
break; \
case '*': \