diff options
author | Andrew Cagney <cagney@redhat.com> | 2001-02-16 01:27:46 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2001-02-16 01:27:46 +0000 |
commit | 0d351472b5b022f559beb3875dfee9a139fe4087 (patch) | |
tree | 43d046d1cb98079fdcce34e121c64faae19baf99 /gdb | |
parent | 6a189dc6c7aeb4831ee87fa4db5cd579e677d3da (diff) | |
download | gdb-0d351472b5b022f559beb3875dfee9a139fe4087.tar.gz |
Simplify code parsing integers and, in process fix a -Wuninitialized warning.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/f-exp.y | 32 |
2 files changed, 21 insertions, 16 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4f891d9ac8f..2c72218d305 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2001-02-15 Andrew Cagney <ac131313@redhat.com> + + * f-exp.y: Include <ctype.h>. + (parse_number): Ensure that ``i'' is always initialized. + 2001-02-14 Jim Kingdon <jkingdon@engr.sgi.com> * MAINTAINERS: Add myself to paper trail section. diff --git a/gdb/f-exp.y b/gdb/f-exp.y index 049d0f5a111..5afed8d8e1e 100644 --- a/gdb/f-exp.y +++ b/gdb/f-exp.y @@ -53,6 +53,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" /* Required by objfiles.h. */ #include "symfile.h" /* Required by objfiles.h. */ #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */ +#include <ctype.h> /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), as well as gratuitiously global symbol names, so we can have multiple @@ -639,7 +640,6 @@ parse_number (p, len, parsed_float, putithere) { register LONGEST n = 0; register LONGEST prevn = 0; - register int i; register int c; register int base = input_radix; int unsigned_p = 0; @@ -697,26 +697,26 @@ parse_number (p, len, parsed_float, putithere) while (len-- > 0) { c = *p++; - if (c >= 'A' && c <= 'Z') - c += 'a' - 'A'; - if (c != 'l' && c != 'u') - n *= base; - if (c >= '0' && c <= '9') - n += i = c - '0'; + if (isupper (c)) + c = tolower (c); + if (len == 0 && c == 'l') + long_p = 1; + else if (len == 0 && c == 'u') + unsigned_p = 1; else { - if (base > 10 && c >= 'a' && c <= 'f') - n += i = c - 'a' + 10; - else if (len == 0 && c == 'l') - long_p = 1; - else if (len == 0 && c == 'u') - unsigned_p = 1; + int i; + if (c >= '0' && c <= '9') + i = c - '0'; + else if (c >= 'a' && c <= 'f') + i = c - 'a' + 10; else return ERROR; /* Char not a digit */ + if (i >= base) + return ERROR; /* Invalid digit in this base */ + n *= base; + n += i; } - if (i >= base) - return ERROR; /* Invalid digit in this base */ - /* Portably test for overflow (only works for nonzero values, so make a second check for zero). */ if ((prevn >= n) && n != 0) |