David Rose 17 rokov pred
rodič
commit
dd84e5b978
1 zmenil súbory, kde vykonal 15 pridanie a 0 odobranie
  1. 15 0
      panda/src/pipeline/thread.cxx

+ 15 - 0
panda/src/pipeline/thread.cxx

@@ -228,6 +228,21 @@ call_python_func(PyObject *function, PyObject *args) {
     // In the main thread, just call the function.
     result = PyObject_Call(function, args, NULL);
 
+    if (result == (PyObject *)NULL) {
+      // Temporarily save and restore the exception state so we can print a
+      // callback on-the-spot.
+      PyObject *exc, *val, *tb;
+      PyErr_Fetch(&exc, &val, &tb);
+      
+      Py_XINCREF(exc);
+      Py_XINCREF(val);
+      Py_XINCREF(tb);
+      PyErr_Restore(exc, val, tb);
+      PyErr_Print();
+      
+      PyErr_Restore(exc, val, tb);
+    }
+
   } else {
 #ifdef SIMPLE_THREADS
     // We can't use the PyGILState interface, which assumes we are using