aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-08-27 05:55:33 +0000
committerRichard Stallman <rms@gnu.org>1992-08-27 05:55:33 +0000
commit8696da340c88dc97b7fd08861bb81e1c886662b8 (patch)
tree94042acefca4d3c6e3648f1a49c0b5bb0e94f9fa /gcc
parente64bddee63466e1a78e801d9b03ec846ad204627 (diff)
downloadgcc-8696da340c88dc97b7fd08861bb81e1c886662b8.zip
gcc-8696da340c88dc97b7fd08861bb81e1c886662b8.tar.gz
gcc-8696da340c88dc97b7fd08861bb81e1c886662b8.tar.bz2
(readescape): For \x, don't include leading 0's in count.
From-SVN: r1973
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-lex.c14
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