Simplify code parsing integers and, in process fix a -Wuninitialized warning.
authorAndrew Cagney <cagney@redhat.com>
Fri, 16 Feb 2001 01:27:46 +0000 (01:27 +0000)
committerAndrew Cagney <cagney@redhat.com>
Fri, 16 Feb 2001 01:27:46 +0000 (01:27 +0000)
gdb/ChangeLog
gdb/f-exp.y

index 4f891d9ac8f918f7f9a9318fae7b2af158aba344..2c72218d305bc426240e5a8a674fe73b42e92229 100644 (file)
@@ -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.
index 049d0f5a111bfed3c527100bb2a8615233fb27ef..5afed8d8e1ea56b04672595b4947f9340e426b30 100644 (file)
@@ -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)