Dispose global mix database.dat properly.

This commit is contained in:
Matthias Mailänder
2016-04-17 14:09:52 +02:00
parent c2c26cbcdc
commit 4719a085bb
2 changed files with 17 additions and 5 deletions

View File

@@ -9,16 +9,21 @@
*/ */
#endregion #endregion
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
namespace OpenRA.FileFormats namespace OpenRA.FileFormats
{ {
public class XccGlobalDatabase public class XccGlobalDatabase : IDisposable
{ {
public readonly string[] Entries; public readonly string[] Entries;
public XccGlobalDatabase(Stream s) readonly Stream s;
public XccGlobalDatabase(Stream stream)
{ {
s = stream;
var entries = new List<string>(); var entries = new List<string>();
while (s.Peek() > -1) while (s.Peek() > -1)
{ {
@@ -40,5 +45,10 @@ namespace OpenRA.FileFormats
Entries = entries.ToArray(); Entries = entries.ToArray();
} }
public void Dispose()
{
s.Dispose();
}
} }
} }

View File

@@ -90,9 +90,11 @@ namespace OpenRA.FileSystem
// TODO: This should be passed to the mix file ctor // TODO: This should be passed to the mix file ctor
if (context.Exists("global mix database.dat")) if (context.Exists("global mix database.dat"))
{ {
var db = new XccGlobalDatabase(context.Open("global mix database.dat")); using (var db = new XccGlobalDatabase(context.Open("global mix database.dat")))
foreach (var e in db.Entries) {
allPossibleFilenames.Add(e); foreach (var e in db.Entries)
allPossibleFilenames.Add(e);
}
} }
foreach (var filename in allPossibleFilenames) foreach (var filename in allPossibleFilenames)