]> git.eshelyaron.com Git - emacs.git/commitdiff
coding.c (decode_coding_iso_2022): When an invalid escape sequence is encountered...
authorKenichi Handa <handa@gnu.org>
Wed, 24 Apr 2013 15:09:49 +0000 (00:09 +0900)
committerKenichi Handa <handa@gnu.org>
Wed, 24 Apr 2013 15:09:49 +0000 (00:09 +0900)
src/ChangeLog
src/coding.c

index 31764cad4851c72e9ba73168dbcdee46529d563f..99e2c3d9a8434dbd207d6a9a3ce0646f1d343907 100644 (file)
@@ -1,3 +1,9 @@
+2013-04-24  Kenichi Handa  <handa@gnu.org>
+
+       * coding.c (decode_coding_iso_2022): When an invalid escape
+       sequence is encountered, reset the invocation and designation
+       status to the safest one.
+
 2013-04-22  Paul Eggert  <eggert@cs.ucla.edu>
 
        * Makefile.in (bootstrap-clean): Remove stamp-h1 too.
index f9799035b3c293b9c02b4106f81373fe25bc4509..b9fb92c481b33e4d13657cc9755530b8aa876174 100644 (file)
@@ -3887,6 +3887,14 @@ decode_coding_iso_2022 (struct coding_system *coding)
       *charbuf++ = c < 0 ? -c : ASCII_BYTE_P (c) ? c : BYTE8_TO_CHAR (c);
       char_offset++;
       coding->errors++;
+      /* Reset the invocation and designation status to the safest
+        one; i.e. designate ASCII to the graphic register 0, and
+        invoke that register to the graphic plane 0.  This typically
+        helps the case that an designation sequence for ASCII "ESC (
+        B" is somehow broken (e.g. broken by a newline).  */
+      CODING_ISO_INVOCATION (coding, 0) = 0;
+      CODING_ISO_DESIGNATION (coding, 0) = charset_ascii;
+      charset_id_0 = charset_ascii;
       continue;
 
     break_loop: