================
@@ -642,6 +649,16 @@ bool 
lldb_private::python::SWIGBridge::LLDBSwigPythonCallCommandObject(
   pfunc(SWIGBridge::ToSWIGWrapper(std::move(debugger)), PythonString(args),
         SWIGBridge::ToSWIGWrapper(exe_ctx_ref_sp), cmd_retobj_arg.obj());
 
+  if (PyErr_Occurred()) {
+    py_err_cleaner.~PyErr_Cleaner();
----------------
labath wrote:

I'm pretty sure this is undefined behavior (you calling the destructor does not 
stop the compiler from calling it again).

I think that a proper fix for this would be to change 
`PythonCallable::operator()` to return `Expected<PythonObject>` (and convert 
the python exception to llvm::error, etc). A lot of the PythonDataObject 
methods were converted to do that (see comment at the top of the header), but 
it looks like this is not one of them.

https://github.com/llvm/llvm-project/pull/113996
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to