diff --git a/Python/fileutils.c b/Python/fileutils.c
index 0aad220..8c049e0 100644
--- a/Python/fileutils.c
+++ b/Python/fileutils.c
@@ -240,8 +240,8 @@
 /* Call _wstat() on Windows, or encode the path to the filesystem encoding and
    call stat() otherwise. Only fill st_mode attribute on Windows.
 
-   Return 0 on success, -1 on _wstat() / stat() error or (if PyErr_Occurred())
-   unicode error. */
+   Return 0 on success, -1 on _wstat() / stat() error, -2 if an exception was
+   raised. */
 
 int
 _Py_stat(PyObject *path, struct stat *statbuf)
@@ -253,7 +253,7 @@
 
     wpath = PyUnicode_AsUnicode(path);
     if (wpath == NULL)
-        return -1;
+        return -2;
     err = _wstat(wpath, &wstatbuf);
     if (!err)
         statbuf->st_mode = wstatbuf.st_mode;
@@ -262,7 +262,7 @@
     int ret;
     PyObject *bytes = PyUnicode_EncodeFSDefault(path);
     if (bytes == NULL)
-        return -1;
+        return -2;
     ret = stat(PyBytes_AS_STRING(bytes), statbuf);
     Py_DECREF(bytes);
     return ret;
diff --git a/Python/import.c b/Python/import.c
index 47839c5..34d1a26 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -1527,6 +1527,7 @@
     Py_UCS4 *fileuni;
     PyObject *py;
     struct stat statbuf;
+    int err;
 
     len = PyUnicode_GET_LENGTH(filename);
     if (len == 0)
@@ -1554,7 +1555,10 @@
     if (py == NULL)
         goto error;
 
-    if (_Py_stat(py, &statbuf) == 0 && S_ISREG(statbuf.st_mode)) {
+    err = _Py_stat(py, &statbuf);
+    if (err == -2)
+        goto error;
+    if (err == 0 && S_ISREG(statbuf.st_mode)) {
         PyMem_Free(fileuni);
         return py;
     }
@@ -1760,7 +1764,7 @@
     Py_ssize_t len, pos;
     struct stat statbuf;
     static struct filedescr fd_package = {"", "", PKG_DIRECTORY};
-    int result, addsep;
+    int err, result, addsep;
 
     if (PyUnicode_Check(path)) {
         Py_INCREF(path);
@@ -1844,7 +1848,12 @@
     /* Check for package import (buf holds a directory name,
        and there's an __init__ module in that directory */
 #ifdef HAVE_STAT
-    if (_Py_stat(filename, &statbuf) == 0 &&         /* it exists */
+    err = _Py_stat(filename, &statbuf);
+    if (err == -2) {
+        result = -1;
+        goto out;
+    }
+    if (err == 0 &&         /* it exists */
         S_ISDIR(statbuf.st_mode))           /* it's a directory */
     {
         int match;
@@ -1905,6 +1914,7 @@
     FILE *fp = NULL;
     PyObject *prefix, *filename;
     int match;
+    int err;
 
     npath = PyList_Size(search_path_list);
     for (i = 0; i < npath; i++) {
@@ -1944,8 +1954,13 @@
             if (Py_VerboseFlag > 1)
                 PySys_FormatStderr("# trying %R\n", filename);
 
-            if (_Py_stat(filename, &statbuf) != 0 || S_ISDIR(statbuf.st_mode))
-            {
+            err = _Py_stat(filename, &statbuf);
+            if (err == -2) {
+                Py_DECREF(prefix);
+                Py_DECREF(filename);
+                return NULL;
+            }
+            if (err != 0 || S_ISDIR(statbuf.st_mode)) {
                 /* it doesn't exist, or it's a directory */
                 Py_DECREF(filename);
                 continue;
@@ -2345,11 +2360,15 @@
     struct stat statbuf;
     PyObject *filename;
     int match;
+    int err;
 
     filename = PyUnicode_FromFormat("%U%c__init__.py", directory, SEP);
     if (filename == NULL)
         return -1;
-    if (_Py_stat(filename, &statbuf) == 0) {
+    err = _Py_stat(filename, &statbuf);
+    if (err == -2)
+        return -1;
+    if (err == 0) {
         /* 3=len(".py") */
         match = case_ok(filename, -3, initstr);
         if (match < 0) {
@@ -2367,7 +2386,12 @@
         directory, SEP, Py_OptimizeFlag ? 'o' : 'c');
     if (filename == NULL)
         return -1;
-    if (_Py_stat(filename, &statbuf) == 0) {
+    err = _Py_stat(filename, &statbuf);
+    if (err == -2) {
+        Py_DECREF(filename);
+        return -1;
+    }
+    if (err == 0) {
         /* 4=len(".pyc") */
         match = case_ok(filename, -4, initstr);
         if (match < 0) {
