From ec5098562a018551a4ec9652fa7658304b1bbe59 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 25 Apr 2013 00:09:49 +0900 Subject: [PATCH] coding.c (decode_coding_iso_2022): When an invalid escape sequence is encountered, reset the invocation and designation status to the safest one. --- src/ChangeLog | 6 ++++++ src/coding.c | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 31764cad485..99e2c3d9a84 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2013-04-24 Kenichi Handa + + * 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 * Makefile.in (bootstrap-clean): Remove stamp-h1 too. diff --git a/src/coding.c b/src/coding.c index f9799035b3c..b9fb92c481b 100644 --- a/src/coding.c +++ b/src/coding.c @@ -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: -- 2.39.2