Commit e118e549 authored by Stefan Behnel's avatar Stefan Behnel

fix star import utility code in Py3

parent 1aeb2d9b
...@@ -2453,6 +2453,9 @@ static int %(IMPORT_STAR)s(PyObject* m) { ...@@ -2453,6 +2453,9 @@ static int %(IMPORT_STAR)s(PyObject* m) {
char* s; char* s;
PyObject *locals = 0; PyObject *locals = 0;
PyObject *list = 0; PyObject *list = 0;
#if PY_MAJOR_VERSION >= 3
PyObject *utf8_name = 0;
#endif
PyObject *name; PyObject *name;
PyObject *item; PyObject *item;
...@@ -2463,19 +2466,26 @@ static int %(IMPORT_STAR)s(PyObject* m) { ...@@ -2463,19 +2466,26 @@ static int %(IMPORT_STAR)s(PyObject* m) {
for(i=0; i<PyList_GET_SIZE(list); i++) { for(i=0; i<PyList_GET_SIZE(list); i++) {
name = PyTuple_GET_ITEM(PyList_GET_ITEM(list, i), 0); name = PyTuple_GET_ITEM(PyList_GET_ITEM(list, i), 0);
item = PyTuple_GET_ITEM(PyList_GET_ITEM(list, i), 1); item = PyTuple_GET_ITEM(PyList_GET_ITEM(list, i), 1);
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION >= 3
s = PyString_AsString(name); utf8_name = PyUnicode_AsUTF8String(name);
if (!utf8_name) goto bad;
s = PyBytes_AS_STRING(utf8_name);
if (%(IMPORT_STAR_SET)s(item, name, s) < 0) goto bad;
Py_DECREF(utf8_name); utf8_name = 0;
#else #else
s = PyUnicode_AsString(name); s = PyString_AsString(name);
#endif
if (!s) goto bad; if (!s) goto bad;
if (%(IMPORT_STAR_SET)s(item, name, s) < 0) goto bad; if (%(IMPORT_STAR_SET)s(item, name, s) < 0) goto bad;
#endif
} }
ret = 0; ret = 0;
bad: bad:
Py_XDECREF(locals); Py_XDECREF(locals);
Py_XDECREF(list); Py_XDECREF(list);
#if PY_MAJOR_VERSION >= 3
Py_XDECREF(utf8_name);
#endif
return ret; return ret;
} }
""" % {'IMPORT_STAR' : Naming.import_star, """ % {'IMPORT_STAR' : Naming.import_star,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment