diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2008-12-12 12:12:11 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2008-12-12 12:12:11 +0000 |
commit | daf195f4bb09d375fb917ef8de82957785917c4f (patch) | |
tree | b4775c6da85bd26f4ab30539823b1e652ec52702 | |
parent | e6c5a32a307cd2be7ede8dbe17c5171fc71e1be4 (diff) | |
download | mpfr-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.c | 7 |
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 '*': \ |