diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c
index 24e4edebeb2603d3bae2bc9d8dc9bfcbad1fff36..0ca65c78774c1dcef6274049fd22371c089628ad 100644
--- a/Python/dynload_shlib.c
+++ b/Python/dynload_shlib.c
@@ -139,9 +139,9 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname,
         path = PyUnicode_FromString(pathname);
         mod_name = PyUnicode_FromString(shortname);
         PyErr_SetImportError(error_ob, mod_name, path);
-        Py_DECREF(error_ob);
-        Py_DECREF(path);
-        Py_DECREF(mod_name);
+        Py_XDECREF(error_ob);
+        Py_XDECREF(path);
+        Py_XDECREF(mod_name);
         return NULL;
     }
     if (fp != NULL && nhandles < 128)