diff options
author | Richard Stallman <rms@gnu.org> | 1992-08-27 05:55:33 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-08-27 05:55:33 +0000 |
commit | 8696da340c88dc97b7fd08861bb81e1c886662b8 (patch) | |
tree | 94042acefca4d3c6e3648f1a49c0b5bb0e94f9fa | |
parent | e64bddee63466e1a78e801d9b03ec846ad204627 (diff) | |
download | gcc-8696da340c88dc97b7fd08861bb81e1c886662b8.zip gcc-8696da340c88dc97b7fd08861bb81e1c886662b8.tar.gz gcc-8696da340c88dc97b7fd08861bb81e1c886662b8.tar.bz2 |
(readescape): For \x, don't include leading 0's in count.
From-SVN: r1973
-rw-r--r-- | gcc/c-lex.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/c-lex.c b/gcc/c-lex.c index 9cb7e6d..1587ae6 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -803,6 +803,7 @@ readescape () register int code; register unsigned count; unsigned firstdig; + int nonnull; switch (c) { @@ -815,6 +816,7 @@ readescape () code = 0; count = 0; + nonnull = 0; while (1) { c = getc (finput); @@ -832,11 +834,15 @@ readescape () code += c - 'A' + 10; if (c >= '0' && c <= '9') code += c - '0'; - if (count == 0) - firstdig = code; - count++; + if (code != 0 || count != 0) + { + if (count == 0) + firstdig = code; + count++; + } + nonnull = 1; } - if (count == 0) + if (! nonnull) error ("\\x used with no following hex digits"); else if ((count - 1) * 4 >= TYPE_PRECISION (integer_type_node) || (count > 1 |