]> git.eshelyaron.com Git - emacs.git/commitdiff
* lread.c (read_escape): Allow hex escapes as large as ?\xfffffff.
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 12 Oct 2011 04:58:43 +0000 (21:58 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Wed, 12 Oct 2011 04:58:43 +0000 (21:58 -0700)
Some packages use them to denote characters with modifiers.

src/ChangeLog
src/lread.c

index c24e70523f51b1ae87d7f97432b192c24dcb9d64..8ad59d5eb27bb8e8a40368f89858d340f1a554ed 100644 (file)
@@ -1,3 +1,8 @@
+2011-10-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lread.c (read_escape): Allow hex escapes as large as ?\xfffffff.
+       Some packages use them to denote characters with modifiers.
+
 2011-10-11  Andreas Schwab  <schwab@linux-m68k.org>
 
        * lisp.h (GCPRO1_VAR, GCPRO2_VAR, GCPRO3_VAR, GCPRO4_VAR)
index af737d27070a296c2c252eff7e5d75e5c3e740ef..110f3e62f710ce4ac9bd4ca03a2e63c6f3013ad6 100644 (file)
@@ -2210,7 +2210,7 @@ read_escape (Lisp_Object readcharfun, int stringp)
     case 'x':
       /* A hex escape, as in ANSI C.  */
       {
-       int i = 0;
+       unsigned int i = 0;
        int count = 0;
        while (1)
          {
@@ -2234,7 +2234,9 @@ read_escape (Lisp_Object readcharfun, int stringp)
                UNREAD (c);
                break;
              }
-           if (MAX_CHAR < i)
+           /* Allow hex escapes as large as ?\xfffffff, because some
+              packages use them to denote characters with modifiers.  */
+           if ((CHAR_META | (CHAR_META - 1)) < i)
              error ("Hex character out of range: \\x%x...", i);
            count += count < 3;
          }