OSDN Git Service

短縮URLが生成されるまでの間に投稿欄のテキストが変更されるとエラーが発生する不具合を修正
authorKimura Youichi <kim.upsilon@bucyou.net>
Sat, 25 Feb 2017 03:29:14 +0000 (12:29 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sat, 25 Feb 2017 03:31:40 +0000 (12:31 +0900)
https://osdn.net/ticket/browse.php?group_id=6526&tid=36440

Fixes: 8dbad640 ("HttpClientを使用してShortUrlクラスの実装を修正")

OpenTween/Resources/ChangeLog.txt
OpenTween/Tween.cs

index 3224fef..061182c 100644 (file)
@@ -9,6 +9,7 @@
  * FIX: OSの設定で小数点にピリオド以外の記号を用いている環境で、Foursquareのサムネイル表示時にエラーが発生する不具合を修正 (thx @Xiatian!)
  * FIX: 「前データを取得」の後に通常の更新が行われると、次に「前データを取得」した際に1件も取得されない不具合を修正
  * FIX: 発言一覧の更新時にエラーが発生する不具合を回避
+ * FIX: 短縮URLの生成中に投稿欄のテキストが変更されるとエラーが発生する不具合を修正
 
 ==== Ver 1.3.6(2016/11/22)
  * NEW: 画像アップロード時のタイムアウト時間が変更できるようになりました
index 363b1b6..c15b98e 100644 (file)
@@ -9286,7 +9286,12 @@ namespace OpenTween
                     {
                         urlUndo undotmp = new urlUndo();
 
-                        StatusText.Select(StatusText.Text.IndexOf(tmp, StringComparison.Ordinal), tmp.Length);
+                        // 短縮 URL が生成されるまでの間に投稿欄から元の URL が削除されていたら中断する
+                        var origUrlIndex = this.StatusText.Text.IndexOf(tmp, StringComparison.Ordinal);
+                        if (origUrlIndex == -1)
+                            return false;
+
+                        StatusText.Select(origUrlIndex, tmp.Length);
                         StatusText.SelectedText = result;
 
                         //undoバッファにセット
@@ -9362,7 +9367,12 @@ namespace OpenTween
 
                     if (!string.IsNullOrEmpty(result))
                     {
-                        StatusText.Select(StatusText.Text.IndexOf(mt.Result("${url}"), StringComparison.Ordinal), mt.Result("${url}").Length);
+                        // 短縮 URL が生成されるまでの間に投稿欄から元の URL が削除されていたら中断する
+                        var origUrlIndex = this.StatusText.Text.IndexOf(mt.Result("${url}"), StringComparison.Ordinal);
+                        if (origUrlIndex == -1)
+                            return false;
+
+                        StatusText.Select(origUrlIndex, mt.Result("${url}").Length);
                         StatusText.SelectedText = result;
                         //undoバッファにセット
                         undotmp.Before = mt.Result("${url}");