diff --git a/Python/traceback.c b/Python/traceback.c
index c56b23f6cca5b7b1695d3614c59eb1b9b378788e..8130d4bcec5d85bd8adb0f4b6fd77dc21abcfa7e 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -246,10 +246,12 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent)
     binary = _PyObject_CallMethodId(io, &PyId_open, "Os", filename, "rb");
 
     if (binary == NULL) {
+        PyErr_Clear();
+
         binary = _Py_FindSourceFile(filename, buf, sizeof(buf), io);
         if (binary == NULL) {
             Py_DECREF(io);
-            return 0;
+            return -1;
         }
     }