From cff9237d57dca37c6194148ae4c157452d269764 Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Thu, 19 Jan 2012 17:46:13 -0500 Subject: [PATCH] check after comments, too (#13832) --- Lib/test/test_compile.py | 2 ++ Parser/parsetok.c | 22 ++++++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 7089872ee24..58b3203a9b3 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -470,6 +470,8 @@ if 1: self.assertInvalidSingle('a = 13\nb = 187') self.assertInvalidSingle('del x\ndel y') self.assertInvalidSingle('f()\ng()') + self.assertInvalidSingle('f()\n# blah\nblah()') + self.assertInvalidSingle('f()\nxy # blah\nblah()') def test_main(): support.run_unittest(TestSpecifics) diff --git a/Parser/parsetok.c b/Parser/parsetok.c index c4b7690b2ea..7beb735d156 100644 --- a/Parser/parsetok.c +++ b/Parser/parsetok.c @@ -234,13 +234,23 @@ parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret, char *cur = tok->cur; char c = *tok->cur; - while (c == ' ' || c == '\t' || c == '\n' || c == '\014') - c = *++cur; + for (;;) { + while (c == ' ' || c == '\t' || c == '\n' || c == '\014') + c = *++cur; - if (c && c != '#') { - err_ret->error = E_BADSINGLE; - PyNode_Free(n); - n = NULL; + if (!c) + break; + + if (c != '#') { + err_ret->error = E_BADSINGLE; + PyNode_Free(n); + n = NULL; + break; + } + + /* Suck up comment. */ + while (c && c != '\n') + c = *++cur; } } #endif