Fix potential crash in ListView.ItemControl.ItemsMouseDown
authorStephen McConnel <stephen_mcconnel@sil.org>
Fri, 3 Oct 2014 18:09:10 +0000 (13:09 -0500)
committerStephen McConnel <stephen_mcconnel@sil.org>
Fri, 3 Oct 2014 18:09:10 +0000 (13:09 -0500)
This fixes Xamarin bug 23591.  Side-effects of internal processing of
ItemsMouseDown can cause ItemsMouseUp before ItemsMouseUp has finished.

mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs

index 3af4684710ade1ef9420d2e56c7319fc0e32c4cd..73d7a837d2bd59268ff7e8aa43902cd9d53a279c 100644 (file)
@@ -2668,6 +2668,11 @@ namespace System.Windows.Forms
                                                        owner.UpdateMultiSelection (clicked_item.DisplayIndex, reselect);
                                        } else {
                                                clicked_item.Selected = true;
+                                               // Side-effects to setting Selected can possibly result in ItemsMouseUp() being called
+                                               // and clicked_item being set to null.  (See Xamarin bug 23591.)  In such a case, assume
+                                               // that there's nothing more we can do here.
+                                               if (clicked_item == null)
+                                                       return;
                                        }
 
                                        if (owner.VirtualMode && changed) {