Skip to content
This repository was archived by the owner on Oct 4, 2021. It is now read-only.

Commit 93127d9

Browse files
authored
Merge pull request #9335 from mono/jstedfast-debugger-remove-value-nre-fix
[Debugger] Fixed an NRE exception in OVTVController.RemoveValue if no…
2 parents 2ebb21a + 3d452e9 commit 93127d9

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Mac/MacObjectValueTreeView.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -828,6 +828,11 @@ protected void OnDelete ()
828828
foreach (var row in selectedRows) {
829829
var item = (MacObjectValueNode) ItemAtRow ((nint) row);
830830

831+
// The user is only allowed to delete top-level nodes. It doesn't make sense to allow
832+
// deleting child nodes of anything else.
833+
if (!(item.Target.Parent is RootObjectValueNode))
834+
continue;
835+
831836
nodesToDelete.Add (item.Target);
832837
}
833838

main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,12 +299,18 @@ void RemovePinnedWatch ()
299299
void RemoveValue (ObjectValueNode node)
300300
{
301301
var toplevel = node.Parent is RootObjectValueNode;
302-
int index = node.Parent.Children.IndexOf (node);
302+
int index;
303+
304+
if (node.Parent != null) {
305+
index = node.Parent.Children.IndexOf (node);
306+
} else {
307+
index = -1;
308+
}
303309

304310
UnregisterNode (node);
305311
OnEvaluationCompleted (node, new ObjectValueNode[0]);
306312

307-
if (AllowWatchExpressions && toplevel)
313+
if (AllowWatchExpressions && toplevel && index != -1)
308314
ExpressionRemoved?.Invoke (this, new ExpressionRemovedEventArgs (index, node.Name));
309315
}
310316

0 commit comments

Comments
 (0)