emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r106060: * lread.c (read_escape): All


From: Paul Eggert
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r106060: * lread.c (read_escape): Allow hex escapes as large as ?\xfffffff.
Date: Tue, 11 Oct 2011 21:58:43 -0700
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 106060
committer: Paul Eggert <address@hidden>
branch nick: trunk
timestamp: Tue 2011-10-11 21:58:43 -0700
message:
  * lread.c (read_escape): Allow hex escapes as large as ?\xfffffff.
  
  Some packages use them to denote characters with modifiers.
modified:
  src/ChangeLog
  src/lread.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2011-10-11 17:35:16 +0000
+++ b/src/ChangeLog     2011-10-12 04:58:43 +0000
@@ -1,3 +1,8 @@
+2011-10-12  Paul Eggert  <address@hidden>
+
+       * 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  <address@hidden>
 
        * lisp.h (GCPRO1_VAR, GCPRO2_VAR, GCPRO3_VAR, GCPRO4_VAR)

=== modified file 'src/lread.c'
--- a/src/lread.c       2011-09-28 00:59:28 +0000
+++ b/src/lread.c       2011-10-12 04:58:43 +0000
@@ -2210,7 +2210,7 @@
     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 @@
                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;
          }


reply via email to

[Prev in Thread] Current Thread [Next in Thread]