aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartijn Kaijser <martijn@xbmc.org>2018-02-17 00:59:42 +0100
committerGitHub <noreply@github.com>2018-02-17 00:59:42 +0100
commitadc0c6113cbf3238f9c6b382c0ca3caaa5ca9a2c (patch)
tree7c36ad75cfd09529d40f619bb4ab3c9205c79364
parentc19729a78ced2439cb392287300b20224c109e37 (diff)
parent5035e8caa4672347a7bfbd7d2172b1b913483fc1 (diff)
Merge pull request #13554 from romanvm/fix_py_traceback
Python: Normalize Python exception before processing
-rw-r--r--xbmc/interfaces/python/swig.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/xbmc/interfaces/python/swig.cpp b/xbmc/interfaces/python/swig.cpp
index f7f4d32fa8..74a41aa1de 100644
--- a/xbmc/interfaces/python/swig.cpp
+++ b/xbmc/interfaces/python/swig.cpp
@@ -176,6 +176,14 @@ namespace PythonBindings
if (exc_type == NULL && exc_value == NULL && exc_traceback == NULL)
return false;
+ // See https://docs.python.org/3/c-api/exceptions.html#c.PyErr_NormalizeException
+ PyErr_NormalizeException(&exc_type, &exc_value, &exc_traceback);
+#if PY_MAJOR_VERSION > 2
+ if (exc_traceback != NULL) {
+ PyException_SetTraceback(exc_value, exc_traceback);
+ }
+#endif
+
exceptionType.clear();
exceptionValue.clear();
exceptionTraceback.clear();