diff options
author | Daniel Jacobowitz <dan@debian.org> | 2002-02-20 22:41:52 +0000 |
---|---|---|
committer | Daniel Jacobowitz <dan@debian.org> | 2002-02-20 22:41:52 +0000 |
commit | 9423a194c155c7710238f58a50ab8452ed79ec5f (patch) | |
tree | 2510f9175dcbd471c371089a10d211e4357cb169 /gdb/jv-exp.y | |
parent | 983fdd97edf5ae29f9710e0f1d56a90dbf5b729a (diff) | |
download | gdb-9423a194c155c7710238f58a50ab8452ed79ec5f.tar.gz |
2002-02-20 Daniel Jacobowitz <drow@mvista.com>
Fix PR gdb/265.
* jv-exp.y (parse_number): Handle 64-bit integers.
Diffstat (limited to 'gdb/jv-exp.y')
-rw-r--r-- | gdb/jv-exp.y | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gdb/jv-exp.y b/gdb/jv-exp.y index 2a9b17e250d..403794e9319 100644 --- a/gdb/jv-exp.y +++ b/gdb/jv-exp.y @@ -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 |