check by equality for __future__ not identity (closes #14378)

This commit is contained in:
Benjamin Peterson 2012-03-22 08:19:04 -04:00
parent 0e3c107549
commit eff19a13ed
3 changed files with 12 additions and 8 deletions

View file

@ -59,13 +59,6 @@ future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename)
{
int i, found_docstring = 0, done = 0, prev_line = 0;
static PyObject *future;
if (!future) {
future = PyString_InternFromString("__future__");
if (!future)
return 0;
}
if (!(mod->kind == Module_kind || mod->kind == Interactive_kind))
return 1;
@ -92,7 +85,9 @@ future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename)
*/
if (s->kind == ImportFrom_kind) {
if (s->v.ImportFrom.module == future) {
PyObject *modname = s->v.ImportFrom.module;
if (PyString_GET_SIZE(modname) == 10 &&
!strcmp(PyString_AS_STRING(modname), "__future__")) {
if (done) {
PyErr_SetString(PyExc_SyntaxError,
ERR_LATE_FUTURE);