about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--Src/lex.c14
2 files changed, 17 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 5ce58d8e4..6e95e317c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2014-12-10  Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
+
+	* 33940: Src/lex.c: handle backslash-meta correctly in lexer
+
 2014-12-09  Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
 
 	* 33932: Src/utils.c: revise boundary check in unmeta()
diff --git a/Src/lex.c b/Src/lex.c
index 1a854f52b..b2a05448c 100644
--- a/Src/lex.c
+++ b/Src/lex.c
@@ -1326,8 +1326,20 @@ gettokstr(int c, int sub)
 		c = hgetc();
 		if (!lexstop)
 		    continue;
-	    } else
+	    } else {
 		add(Bnull);
+		if (c == STOUC(Meta)) {
+		    c = hgetc();
+#ifdef DEBUG
+		    if (lexstop) {
+			fputs("BUG: input terminated by Meta\n", stderr);
+			fflush(stderr);
+			goto brk;
+		    }
+#endif
+		    add(Meta);
+		}
+	    }
 	    if (lexstop)
 		goto brk;
 	    break;