- Finally fixed the bug in compile() and exec where a string ending
with an indented code block but no newline would raise SyntaxError.
This would have been a four-line change in parsetok.c... Except
codeop.py depends on this behavior, so a compilation flag had to be
invented that causes the tokenizer to revert to the old behavior;
this required extra changes to 2 .h files, 2 .c files, and 2 .py
files. (Fixes SF bug #501622.)
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 338e38d..62aa512 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -380,7 +380,9 @@
return NULL;
}
- if (supplied_flags & ~(PyCF_MASK | PyCF_MASK_OBSOLETE)) {
+ if (supplied_flags &
+ ~(PyCF_MASK | PyCF_MASK_OBSOLETE | PyCF_DONT_IMPLY_DEDENT))
+ {
PyErr_SetString(PyExc_ValueError,
"compile(): unrecognised flags");
return NULL;