diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2011-06-22 15:39:06 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2011-06-22 15:39:06 -0700 |
commit | 39019e542536660936a5fd1a7369ae54fdc6ddd2 (patch) | |
tree | acfddec35a7fa196c553bd6066d8685628016c8f /src/lread.c | |
parent | bfbbd7e7528f1f4928c305b65ec0f9c55ed628a2 (diff) | |
download | emacs-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.c | 7 |
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); |