OSDN Git Service

MemoryImage.Equalsから例外を返さない (CA1065)
authorKimura Youichi <kim.upsilon@bucyou.net>
Fri, 11 Dec 2015 17:42:11 +0000 (02:42 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Tue, 15 Dec 2015 07:28:19 +0000 (16:28 +0900)
OpenTween/MemoryImage.cs

index 92b724d..ca07c6d 100644 (file)
@@ -213,14 +213,19 @@ namespace OpenTween
             var selfLength = this.Stream.Length;
             var otherLength = other.Stream.Length;
 
-            // Enumerable.Take() が int 型しか受け付けないのでとりあえず int 型の範囲まで許容
-            if (selfLength > int.MaxValue || otherLength > int.MaxValue)
-                throw new ArgumentOutOfRangeException();
+            if (selfLength != otherLength)
+                return false;
+
+            var selfBuffer = this.Stream.GetBuffer();
+            var otherBuffer = other.Stream.GetBuffer();
 
-            var selfBytes = this.Stream.GetBuffer().Take((int)this.Stream.Length);
-            var otherBytes = other.Stream.GetBuffer().Take((int)this.Stream.Length);
+            for (var pos = 0L; pos < selfLength; pos++)
+            {
+                if (selfBuffer[pos] != otherBuffer[pos])
+                    return false;
+            }
 
-            return selfBytes.SequenceEqual(otherBytes);
+            return true;
         }
 
         object ICloneable.Clone()