]> granicus.if.org Git - python/commitdiff
Clear possible exception before calling PyTuple_Pack in IMPORT_NAME (GH-6033)
authorXiang Zhang <angwerzx@126.com>
Fri, 9 Mar 2018 02:21:58 +0000 (10:21 +0800)
committerGitHub <noreply@github.com>
Fri, 9 Mar 2018 02:21:58 +0000 (10:21 +0800)
Python/ceval.c

index bae158dc1402b12446c7a27dd453d581a4d46ed2..b55b4d66880cd03b56163b4764661f778e574387 100644 (file)
@@ -2598,6 +2598,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
 
         TARGET(IMPORT_NAME)
         {
+            long res;
             w = GETITEM(names, oparg);
             x = PyDict_GetItemString(f->f_builtins, "__import__");
             if (x == NULL) {
@@ -2608,7 +2609,12 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
             Py_INCREF(x);
             v = POP();
             u = TOP();
-            if (PyInt_AsLong(u) != -1 || PyErr_Occurred())
+            res = PyInt_AsLong(u);
+            if (res != -1 || PyErr_Occurred()) {
+                if (res == -1) {
+                    assert(PyErr_Occurred());
+                    PyErr_Clear();
+                }
                 w = PyTuple_Pack(5,
                             w,
                             f->f_globals,
@@ -2616,6 +2622,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
                                   Py_None : f->f_locals,
                             v,
                             u);
+            }
             else
                 w = PyTuple_Pack(4,
                             w,