From fb44d02bec591aaac9740b78d9244f674434b8d2 Mon Sep 17 00:00:00 2001 From: hauntsaninja Date: Wed, 15 Apr 2026 20:46:56 -0700 Subject: [PATCH] [mypyc] Avoid null decrefs in import errors Found by @devdanzin --- mypyc/lib-rt/misc_ops.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mypyc/lib-rt/misc_ops.c b/mypyc/lib-rt/misc_ops.c index 14721ca7a0cb..e083d60e78d7 100644 --- a/mypyc/lib-rt/misc_ops.c +++ b/mypyc/lib-rt/misc_ops.c @@ -847,12 +847,13 @@ static PyObject *CPyImport_ImportFrom(PyObject *module, PyObject *package_name, fail: PyErr_Clear(); PyObject *package_path = PyModule_GetFilenameObject(module); + PyObject *path_for_msg = package_path != NULL ? package_path : Py_None; PyObject *errmsg = PyUnicode_FromFormat("cannot import name %R from %R (%S)", - import_name, package_name, package_path); + import_name, package_name, path_for_msg); // NULL checks for errmsg and package_name done by PyErr_SetImportError. PyErr_SetImportError(errmsg, package_name, package_path); - Py_DECREF(package_path); - Py_DECREF(errmsg); + Py_XDECREF(package_path); + Py_XDECREF(errmsg); return NULL; }