summaryrefslogtreecommitdiff
path: root/src/lread.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2011-06-22 15:39:06 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2011-06-22 15:39:06 -0700
commit39019e542536660936a5fd1a7369ae54fdc6ddd2 (patch)
treeacfddec35a7fa196c553bd6066d8685628016c8f /src/lread.c
parentbfbbd7e7528f1f4928c305b65ec0f9c55ed628a2 (diff)
downloademacs-39019e542536660936a5fd1a7369ae54fdc6ddd2.tar.gz
emacs-39019e542536660936a5fd1a7369ae54fdc6ddd2.tar.bz2
emacs-39019e542536660936a5fd1a7369ae54fdc6ddd2.zip
* lread.c (read_escape): Check for hex character overflow.
Diffstat (limited to 'src/lread.c')
-rw-r--r--src/lread.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/lread.c b/src/lread.c
index 42ddbfd188d..a2f78f848ae 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -2208,6 +2208,8 @@ read_escape (Lisp_Object readcharfun, int stringp)
UNREAD (c);
break;
}
+ if (MAX_CHAR < i)
+ error ("Hex character out of range: \\x%x...", i);
count++;
}
@@ -2236,10 +2238,7 @@ read_escape (Lisp_Object readcharfun, int stringp)
else if (c >= 'a' && c <= 'f') i = (i << 4) + (c - 'a') + 10;
else if (c >= 'A' && c <= 'F') i = (i << 4) + (c - 'A') + 10;
else
- {
- error ("Non-hex digit used for Unicode escape");
- break;
- }
+ error ("Non-hex digit used for Unicode escape");
}
if (i > 0x10FFFF)
error ("Non-Unicode character: 0x%x", i);