Skip to content

Commit f8e1fa6

Browse files
authored
Merge pull request #3 from NosCoreIO/Fix
Fix memory leaks
2 parents 8d55ed5 + e057ce2 commit f8e1fa6

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

src/NosCore.ParserInputGenerator/Extractor/Extractor.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,23 @@ public async Task ExtractAsync(FileInfo nosFile, string directory, bool rename)
2727
{
2828
async Task WriteFile(string fileName, MemoryStream decryptedContent)
2929
{
30-
FileStream fileStream;
3130
if (rename && fileName.Contains("."))
3231
{
3332
var name = fileName.Substring(0, fileName.IndexOf('.'));
3433
var ext = fileName.Substring(fileName.IndexOf('.'));
35-
fileStream =
34+
await using var fileStream =
3635
File.Create(
3736
$"{directory}{name}{nosFile.Name.Substring(nosFile.Name.LastIndexOf('_'), 3)}{ext}");
37+
decryptedContent.Seek(0, SeekOrigin.Begin);
38+
await decryptedContent.CopyToAsync(fileStream);
3839
}
3940
else
4041
{
41-
fileStream = File.Create($"{directory}{fileName}");
42+
await using var fileStream = File.Create($"{directory}{fileName}");
43+
decryptedContent.Seek(0, SeekOrigin.Begin);
44+
await decryptedContent.CopyToAsync(fileStream);
4245
}
43-
44-
decryptedContent.Seek(0, SeekOrigin.Begin);
45-
await decryptedContent.CopyToAsync(fileStream);
46+
4647
}
4748

4849
try
@@ -69,7 +70,7 @@ async Task WriteFile(string fileName, MemoryStream decryptedContent)
6970
currentIndex += 4;
7071
var compressedDataSize = BitConverter.ToInt32(fsSource.Skip(currentIndex).Take(4).ToArray());
7172
currentIndex += 5;
72-
var outputStream = new MemoryStream();
73+
await using var outputStream = new MemoryStream();
7374
var bigEndian = fsSource.Skip(currentIndex).Take(dataSize + compressedDataSize).ToArray();
7475
await using var compressedStream = new MemoryStream(bigEndian);
7576
await using var inputStream = new InflaterInputStream(compressedStream);
@@ -95,7 +96,7 @@ async Task WriteFile(string fileName, MemoryStream decryptedContent)
9596
var fileContent = fsSource.Skip(currentIndex).Take(fileSize).ToArray();
9697
currentIndex += fileSize;
9798

98-
var decryptedContent = new MemoryStream(DecryptDat(fileContent));
99+
await using var decryptedContent = new MemoryStream(DecryptDat(fileContent));
99100
await WriteFile(fileName, decryptedContent);
100101
}
101102
}

src/NosCore.ParserInputGenerator/NosCore.ParserInputGenerator.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<RepositoryUrl>https://github.com/NosCoreIO/NosCore.ParserInputGenerator.git</RepositoryUrl>
1313
<PackageIconUrl></PackageIconUrl>
1414
<PackageTags>nostale, noscore, nostale private server source, nostale emulator</PackageTags>
15-
<Version>1.1.0</Version>
15+
<Version>1.2.0</Version>
1616
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
1717
<Description>NosCore's Parser InputGenerator</Description>
1818
<PackageLicenseExpression></PackageLicenseExpression>

0 commit comments

Comments
 (0)