Skip to content

Commit c6795cc

Browse files
authored
[mypyc] Avoid null decrefs in import errors (#21247)
Found by @devdanzin
1 parent 22610a2 commit c6795cc

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

mypyc/lib-rt/misc_ops.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -847,12 +847,13 @@ static PyObject *CPyImport_ImportFrom(PyObject *module, PyObject *package_name,
847847
fail:
848848
PyErr_Clear();
849849
PyObject *package_path = PyModule_GetFilenameObject(module);
850+
PyObject *path_for_msg = package_path != NULL ? package_path : Py_None;
850851
PyObject *errmsg = PyUnicode_FromFormat("cannot import name %R from %R (%S)",
851-
import_name, package_name, package_path);
852+
import_name, package_name, path_for_msg);
852853
// NULL checks for errmsg and package_name done by PyErr_SetImportError.
853854
PyErr_SetImportError(errmsg, package_name, package_path);
854-
Py_DECREF(package_path);
855-
Py_DECREF(errmsg);
855+
Py_XDECREF(package_path);
856+
Py_XDECREF(errmsg);
856857
return NULL;
857858
}
858859

0 commit comments

Comments
 (0)