summaryrefslogtreecommitdiffstats
path: root/lldb/scripts/Python/python-wrapper.swig
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/scripts/Python/python-wrapper.swig')
-rw-r--r--lldb/scripts/Python/python-wrapper.swig17
1 files changed, 15 insertions, 2 deletions
diff --git a/lldb/scripts/Python/python-wrapper.swig b/lldb/scripts/Python/python-wrapper.swig
index 8bb74647741..b7af3422193 100644
--- a/lldb/scripts/Python/python-wrapper.swig
+++ b/lldb/scripts/Python/python-wrapper.swig
@@ -45,7 +45,8 @@ LLDBSwigPythonBreakpointCallbackFunction
const char *python_function_name,
const char *session_dictionary_name,
const lldb::StackFrameSP& frame_sp,
- const lldb::BreakpointLocationSP& bp_loc_sp
+ const lldb::BreakpointLocationSP& bp_loc_sp,
+ lldb_private::StructuredDataImpl *args_impl
)
{
lldb::SBFrame sb_frame (frame_sp);
@@ -62,7 +63,19 @@ LLDBSwigPythonBreakpointCallbackFunction
PythonObject frame_arg(PyRefType::Owned, SBTypeToSWIGWrapper(sb_frame));
PythonObject bp_loc_arg(PyRefType::Owned, SBTypeToSWIGWrapper(sb_bp_loc));
- PythonObject result = pfunc(frame_arg, bp_loc_arg, dict);
+
+ PythonObject result;
+ // If the called function doesn't take extra_args, drop them here:
+ auto arg_info = pfunc.GetNumArguments();
+ if (arg_info.count == 3)
+ result = pfunc(frame_arg, bp_loc_arg, dict);
+ else if (arg_info.count == 4) {
+ lldb::SBStructuredData *args_value = new lldb::SBStructuredData(args_impl);
+ PythonObject args_arg(PyRefType::Owned, SBTypeToSWIGWrapper(args_value));
+ result = pfunc(frame_arg, bp_loc_arg, args_arg, dict);
+ } else {
+ return stop_at_breakpoint;
+ }
if (result.get() == Py_False)
stop_at_breakpoint = false;
OpenPOWER on IntegriCloud