OSDN Git Service

TabModel.GetStatusIdAt に範囲外のインデックスが指定されないように修正
authorKimura Youichi <kim.upsilon@bucyou.net>
Wed, 18 Jan 2017 13:16:00 +0000 (22:16 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Wed, 25 Jan 2017 14:14:39 +0000 (23:14 +0900)
TabClass.GetId メソッドでは範囲外のインデックスの指定に対して -1 を返していた

GetSelectedStatusIds:
  https://ja.osdn.net/ticket/browse.php?group_id=6526&tid=36685

GetSelectionMarkStatusId:
  https://ja.osdn.net/ticket/browse.php?group_id=6526&tid=36756

Fixes: 15ff9801 ("TabClassをタブの種類別のクラスに分離")

OpenTween/Tween.cs

index 41937c7..a77407a 100644 (file)
@@ -1516,9 +1516,9 @@ namespace OpenTween
 
             if (listScroll.ScrollLockMode == ScrollLockMode.FixedToItem)
             {
-                var topItem = listView.TopItem;
-                if (topItem != null)
-                    listScroll.TopItemStatusId = tab.GetStatusIdAt(topItem.Index);
+                var topItemIndex = listView.TopItem?.Index ?? -1;
+                if (topItemIndex != -1 && topItemIndex < tab.AllCount)
+                    listScroll.TopItemStatusId = tab.GetStatusIdAt(topItemIndex);
             }
 
             return listScroll;
@@ -1622,16 +1622,16 @@ namespace OpenTween
 
         private long? GetFocusedStatusId(DetailsListView listView, TabModel tab)
         {
-            var focusedItem = listView.FocusedItem;
+            var index = listView.FocusedItem?.Index ?? -1;
 
-            return focusedItem != null ? tab.GetStatusIdAt(focusedItem.Index) : (long?)null;
+            return index != -1 && index < tab.AllCount ? tab.GetStatusIdAt(index) : (long?)null;
         }
 
         private long? GetSelectionMarkStatusId(DetailsListView listView, TabModel tab)
         {
-            var selectionMarkIndex = listView.SelectionMark;
+            var index = listView.SelectionMark;
 
-            return selectionMarkIndex != -1 ? tab.GetStatusIdAt(selectionMarkIndex) : (long?)null;
+            return index != -1 && index < tab.AllCount ? tab.GetStatusIdAt(index) : (long?)null;
         }
 
         /// <summary>