diff --git a/OpenSubtitlesHandler/MovieHasher.cs b/OpenSubtitlesHandler/MovieHasher.cs index 89301191fe..57be9ab28e 100644 --- a/OpenSubtitlesHandler/MovieHasher.cs +++ b/OpenSubtitlesHandler/MovieHasher.cs @@ -8,29 +8,31 @@ namespace OpenSubtitlesHandler { public static byte[] ComputeMovieHash(Stream input) { - long lhash, streamsize; - streamsize = input.Length; - lhash = streamsize; - - long i = 0; - byte[] buffer = new byte[sizeof(long)]; - while (i < 65536 / sizeof(long) && (input.Read(buffer, 0, sizeof(long)) > 0)) + using (input) { - i++; - lhash += BitConverter.ToInt64(buffer, 0); - } + long lhash, streamsize; + streamsize = input.Length; + lhash = streamsize; - input.Position = Math.Max(0, streamsize - 65536); - i = 0; - while (i < 65536 / sizeof(long) && (input.Read(buffer, 0, sizeof(long)) > 0)) - { - i++; - lhash += BitConverter.ToInt64(buffer, 0); + long i = 0; + byte[] buffer = new byte[sizeof(long)]; + while (i < 65536 / sizeof(long) && (input.Read(buffer, 0, sizeof(long)) > 0)) + { + i++; + lhash += BitConverter.ToInt64(buffer, 0); + } + + input.Position = Math.Max(0, streamsize - 65536); + i = 0; + while (i < 65536 / sizeof(long) && (input.Read(buffer, 0, sizeof(long)) > 0)) + { + i++; + lhash += BitConverter.ToInt64(buffer, 0); + } + byte[] result = BitConverter.GetBytes(lhash); + Array.Reverse(result); + return result; } - input.Close(); - byte[] result = BitConverter.GetBytes(lhash); - Array.Reverse(result); - return result; } public static string ToHexadecimal(byte[] bytes)