OSDN Git Service

Image.FromStream()メソッドでOutOfMemoryExceptionが発生する問題への対処 (thx @7mencho!)
authorKimura Youichi <kim.upsilon@bucyou.net>
Fri, 1 Nov 2013 21:39:49 +0000 (06:39 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sat, 2 Nov 2013 09:00:47 +0000 (18:00 +0900)
報告のあったエラー発生時の状況では特段メモリの空きが逼迫している様子ではなかったことや、MSDN の
Image.FromFile() メソッドのページには GDI+ のエラーによって OutOfMemoryException が発生する
という記述があることから、メモリ使用量に関係なく画像データの問題によってこの例外が発生するものと判断し
発生した場合は不正な画像として扱うことで対処しました。

OpenTween/MemoryImage.cs
OpenTween/Resources/ChangeLog.txt

index 16e6645..a3075c7 100644 (file)
@@ -58,6 +58,17 @@ namespace OpenTween
                 stream.Dispose();
                 throw new InvalidImageException("Invalid image", e);
             }
+            catch (OutOfMemoryException e)
+            {
+                // GDI+ がサポートしない画像形式で OutOfMemoryException がスローされる場合があるらしい
+                stream.Dispose();
+                throw new InvalidImageException("Invalid image?", e);
+            }
+            catch (Exception)
+            {
+                stream.Dispose();
+                throw;
+            }
 
             this.Stream = stream;
         }
index fd92586..afce2a4 100644 (file)
@@ -1,6 +1,7 @@
 更新履歴
 
 ==== Ver 1.1.5-beta1(2013/xx/xx)
+ * FIX: 取得したプロフィール画像が壊れていた場合のエラー処理を改善 (thx @7mencho!)
 
 ==== Ver 1.1.4(2013/10/19)
  * CHG: タブ振り分けルールでのスクリーン名に対するヒット条件が、「複合条件」では完全一致、「単一条件」では部分一致となっていたため完全一致に統一