OSDN Git Service

サムネイル及びプロフィール画像取得時のDispose漏れを修正
authorKimura Youichi <kim.upsilon@bucyou.net>
Mon, 13 Oct 2014 07:45:12 +0000 (16:45 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Mon, 13 Oct 2014 11:18:57 +0000 (20:18 +0900)
response (HttpResponseMessage) が破棄される際に内部で response.Content も破棄
されるらしいので殆どは実害は無さそうだが、UserInfoDialog の修正箇所については
HttpResponseMessage を介さず直接 HttpClient.GetStreamAsync() でストリームを取得
しているためメモリリークが発生している可能性がある。

OpenTween/ImageCache.cs
OpenTween/Resources/ChangeLog.txt
OpenTween/Thumbnail/Services/Pixiv.cs
OpenTween/Thumbnail/ThumbnailInfo.cs
OpenTween/UserInfoDialog.cs

index 5b2e16d..7d4da85 100644 (file)
@@ -125,11 +125,13 @@ namespace OpenTween
         {
             using (var response = await Networking.Http.GetAsync(uri, cancelToken).ConfigureAwait(false))
             {
-                var imageStream = await response.Content.ReadAsStreamAsync()
-                    .ConfigureAwait(false);
+                response.EnsureSuccessStatusCode();
 
-                return await MemoryImage.CopyFromStreamAsync(imageStream)
-                    .ConfigureAwait(false);
+                using (var imageStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
+                {
+                    return await MemoryImage.CopyFromStreamAsync(imageStream)
+                        .ConfigureAwait(false);
+                }
             }
         }
 
index d67ed16..373b3bb 100644 (file)
@@ -11,6 +11,7 @@
  * FIX: 画像投稿時に、入力したツイートと画像URLの間に空白が2文字入ってしまう不具合を修正
  * FIX: 画像が紐付いていないTumblrのURLに対してサムネイル画像欄が表示され読み込みに失敗する不具合を修正
  * FIX: ESCキーで閉じられないダイアログが一部存在していた問題を修正
+ * FIX: サムネイル及びプロフィール画像の読み込み時にメモリリークする恐れがある不具合を修正
 
 ==== Ver 1.2.3(2014/09/03)
  * NEW: UserSteams の (un)mute イベント追加に対応
index 57036e9..1fb5119 100644 (file)
@@ -76,11 +76,11 @@ namespace OpenTween.Thumbnail.Services
                 {
                     response.EnsureSuccessStatusCode();
 
-                    var imageStream = await response.Content.ReadAsStreamAsync()
-                        .ConfigureAwait(false);
-
-                    return await MemoryImage.CopyFromStreamAsync(imageStream)
-                        .ConfigureAwait(false);
+                    using (var imageStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
+                    {
+                        return await MemoryImage.CopyFromStreamAsync(imageStream)
+                            .ConfigureAwait(false);
+                    }
                 }
             }
         }
index 7c240a4..9fee07e 100644 (file)
@@ -53,11 +53,11 @@ namespace OpenTween.Thumbnail
             {
                 response.EnsureSuccessStatusCode();
 
-                var imageStream = await response.Content.ReadAsStreamAsync()
-                    .ConfigureAwait(false);
-
-                return await MemoryImage.CopyFromStreamAsync(imageStream)
-                    .ConfigureAwait(false);
+                using (var imageStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
+                {
+                    return await MemoryImage.CopyFromStreamAsync(imageStream)
+                        .ConfigureAwait(false);
+                }
             }
         }
 
index ec87aef..7800283 100644 (file)
@@ -169,11 +169,11 @@ namespace OpenTween
             {
                 var uri = imageUri.Replace("_normal", "_bigger");
 
-                var imageStream = await Networking.Http.GetStreamAsync(uri)
-                    .ConfigureAwait(false);
-
-                return await MemoryImage.CopyFromStreamAsync(imageStream)
-                    .ConfigureAwait(false);
+                using (var imageStream = await Networking.Http.GetStreamAsync(uri).ConfigureAwait(false))
+                {
+                    return await MemoryImage.CopyFromStreamAsync(imageStream)
+                        .ConfigureAwait(false);
+                }
             });
         }