2002-02-20 Daniel Jacobowitz <drow@mvista.com>
authorDaniel Jacobowitz <drow@false.org>
Wed, 20 Feb 2002 22:41:52 +0000 (22:41 +0000)
committerDaniel Jacobowitz <drow@false.org>
Wed, 20 Feb 2002 22:41:52 +0000 (22:41 +0000)
        Fix PR gdb/265.
        * jv-exp.y (parse_number): Handle 64-bit integers.

gdb/ChangeLog
gdb/jv-exp.y

index 168cfb1a86bfcd25c1f73eaeef6ef87b258b7ea2..22d2785ee879766c7517872e52c92a84f21ab0f4 100644 (file)
@@ -1,3 +1,8 @@
+2002-02-20  Daniel Jacobowitz  <drow@mvista.com>
+
+       Fix PR gdb/265.
+       * jv-exp.y (parse_number): Handle 64-bit integers.
+
 2002-02-20  Daniel Jacobowitz  <drow@mvista.com>
 
        * gdbserver/configure.in: Remove AM_PROC_CC_STDC.  Change
index 2a9b17e250d4d674e9a93fdc508c47dcfc2f810f..403794e9319eb2192829e60ee1f4a61038b03ddb 100644 (file)
@@ -764,13 +764,13 @@ parse_number (p, len, parsed_float, putithere)
       }
 
   c = p[len-1];
+  /* A paranoid calculation of (1<<64)-1. */
   limit = (ULONGEST)0xffffffff;
+  limit = ((limit << 16) << 16) | limit;
   if (c == 'l' || c == 'L')
     {
       type = java_long_type;
       len--;
-      /* A paranoid calculation of (1<<64)-1. */
-      limit = ((limit << 16) << 16) | limit;
     }
   else
     {
@@ -797,9 +797,13 @@ parse_number (p, len, parsed_float, putithere)
       n += c;
        }
 
-   putithere->typed_val_int.val = n;
-   putithere->typed_val_int.type = type;
-   return INTEGER_LITERAL;
+  if (type == java_int_type && n > (ULONGEST)0xffffffff)
+    type = java_long_type;
+
+  putithere->typed_val_int.val = n;
+  putithere->typed_val_int.type = type;
+
+  return INTEGER_LITERAL;
 }
 
 struct token