Close packages that are not required when loading mod metadata.

This commit is contained in:
RoosterDragon
2016-03-04 21:19:32 +00:00
parent 83a13f1594
commit 4bd57aec91

View File

@@ -38,9 +38,9 @@ namespace OpenRA
var ret = new Dictionary<string, ModMetadata>(); var ret = new Dictionary<string, ModMetadata>();
foreach (var pair in GetCandidateMods()) foreach (var pair in GetCandidateMods())
{ {
IReadOnlyPackage package = null;
try try
{ {
IReadOnlyPackage package = null;
if (Directory.Exists(pair.Second)) if (Directory.Exists(pair.Second))
package = new Folder(pair.Second); package = new Folder(pair.Second);
else else
@@ -56,12 +56,18 @@ namespace OpenRA
} }
if (!package.Contains("mod.yaml")) if (!package.Contains("mod.yaml"))
{
package.Dispose();
continue; continue;
}
var yaml = new MiniYaml(null, MiniYaml.FromStream(package.GetStream("mod.yaml"))); var yaml = new MiniYaml(null, MiniYaml.FromStream(package.GetStream("mod.yaml")));
var nd = yaml.ToDictionary(); var nd = yaml.ToDictionary();
if (!nd.ContainsKey("Metadata")) if (!nd.ContainsKey("Metadata"))
{
package.Dispose();
continue; continue;
}
var metadata = FieldLoader.Load<ModMetadata>(nd["Metadata"]); var metadata = FieldLoader.Load<ModMetadata>(nd["Metadata"]);
metadata.Id = pair.First; metadata.Id = pair.First;
@@ -81,6 +87,8 @@ namespace OpenRA
} }
catch (Exception ex) catch (Exception ex)
{ {
if (package != null)
package.Dispose();
Console.WriteLine("An exception occurred when trying to load ModMetadata for `{0}`:".F(pair.First)); Console.WriteLine("An exception occurred when trying to load ModMetadata for `{0}`:".F(pair.First));
Console.WriteLine(ex.Message); Console.WriteLine(ex.Message);
} }