From f0668da123fafb4b85bd4ddd4d19d5ad63ef44c0 Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Mon, 13 Oct 2014 16:45:12 +0900 Subject: [PATCH] =?utf8?q?=E3=82=B5=E3=83=A0=E3=83=8D=E3=82=A4=E3=83=AB?= =?utf8?q?=E5=8F=8A=E3=81=B3=E3=83=97=E3=83=AD=E3=83=95=E3=82=A3=E3=83=BC?= =?utf8?q?=E3=83=AB=E7=94=BB=E5=83=8F=E5=8F=96=E5=BE=97=E6=99=82=E3=81=AED?= =?utf8?q?ispose=E6=BC=8F=E3=82=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit response (HttpResponseMessage) が破棄される際に内部で response.Content も破棄 されるらしいので殆どは実害は無さそうだが、UserInfoDialog の修正箇所については HttpResponseMessage を介さず直接 HttpClient.GetStreamAsync() でストリームを取得 しているためメモリリークが発生している可能性がある。 --- OpenTween/ImageCache.cs | 10 ++++++---- OpenTween/Resources/ChangeLog.txt | 1 + OpenTween/Thumbnail/Services/Pixiv.cs | 10 +++++----- OpenTween/Thumbnail/ThumbnailInfo.cs | 10 +++++----- OpenTween/UserInfoDialog.cs | 10 +++++----- 5 files changed, 22 insertions(+), 19 deletions(-) diff --git a/OpenTween/ImageCache.cs b/OpenTween/ImageCache.cs index 5b2e16d7..7d4da850 100644 --- a/OpenTween/ImageCache.cs +++ b/OpenTween/ImageCache.cs @@ -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); + } } } diff --git a/OpenTween/Resources/ChangeLog.txt b/OpenTween/Resources/ChangeLog.txt index d67ed16f..373b3bb6 100644 --- a/OpenTween/Resources/ChangeLog.txt +++ b/OpenTween/Resources/ChangeLog.txt @@ -11,6 +11,7 @@ * FIX: 画像投稿時に、入力したツイートと画像URLの間に空白が2文字入ってしまう不具合を修正 * FIX: 画像が紐付いていないTumblrのURLに対してサムネイル画像欄が表示され読み込みに失敗する不具合を修正 * FIX: ESCキーで閉じられないダイアログが一部存在していた問題を修正 + * FIX: サムネイル及びプロフィール画像の読み込み時にメモリリークする恐れがある不具合を修正 ==== Ver 1.2.3(2014/09/03) * NEW: UserSteams の (un)mute イベント追加に対応 diff --git a/OpenTween/Thumbnail/Services/Pixiv.cs b/OpenTween/Thumbnail/Services/Pixiv.cs index 57036e91..1fb5119e 100644 --- a/OpenTween/Thumbnail/Services/Pixiv.cs +++ b/OpenTween/Thumbnail/Services/Pixiv.cs @@ -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); + } } } } diff --git a/OpenTween/Thumbnail/ThumbnailInfo.cs b/OpenTween/Thumbnail/ThumbnailInfo.cs index 7c240a47..9fee07ed 100644 --- a/OpenTween/Thumbnail/ThumbnailInfo.cs +++ b/OpenTween/Thumbnail/ThumbnailInfo.cs @@ -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); + } } } diff --git a/OpenTween/UserInfoDialog.cs b/OpenTween/UserInfoDialog.cs index ec87aefa..78002835 100644 --- a/OpenTween/UserInfoDialog.cs +++ b/OpenTween/UserInfoDialog.cs @@ -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); + } }); } -- 2.11.0