Skip to content

Commit 210c493

Browse files
Fix: Fixed an issue where it sometimes failed to extract an archive (#12379)
1 parent e09eabc commit 210c493

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/Files.App/Helpers/ZipHelpers.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public static class ZipHelpers
1818
{
1919
private static async Task<SevenZipExtractor?> GetZipFile(BaseStorageFile archive, string password = "")
2020
{
21-
return await Filesystem.FilesystemTasks.Wrap(async () =>
21+
return await FilesystemTasks.Wrap(async () =>
2222
{
2323
var arch = new SevenZipExtractor(await archive.OpenStreamForReadAsync(), password);
2424
return arch?.ArchiveFileData is null ? null : arch; // Force load archive (1665013614u)
@@ -39,7 +39,7 @@ public static async Task ExtractArchive(BaseStorageFile archive, BaseStorageFold
3939
using SevenZipExtractor? zipFile = await GetZipFile(archive, password);
4040
if (zipFile is null)
4141
return;
42-
//zipFile.IsStreamOwner = true;
42+
4343
var directoryEntries = new List<ArchiveFileInfo>();
4444
var fileEntries = new List<ArchiveFileInfo>();
4545
foreach (ArchiveFileInfo entry in zipFile.ArchiveFileData)
@@ -91,6 +91,7 @@ public static async Task ExtractArchive(BaseStorageFile archive, BaseStorageFold
9191
byte[] buffer = new byte[4096];
9292
int entriesAmount = fileEntries.Count;
9393
int entriesFinished = 0;
94+
var minimumTime = new DateTime(1);
9495

9596
FileSystemProgress fsProgress = new(progress, true, Shared.Enums.FileSystemStatusCode.InProgress, entriesAmount);
9697
fsProgress.Report();
@@ -119,10 +120,10 @@ public static async Task ExtractArchive(BaseStorageFile archive, BaseStorageFold
119120
return; // TODO: handle error
120121
}
121122
}
122-
123+
123124
_ = new FileInfo(filePath)
124125
{
125-
CreationTime = entry.CreationTime < entry.LastWriteTime ? entry.CreationTime : entry.LastWriteTime,
126+
CreationTime = entry.CreationTime > minimumTime && entry.CreationTime < entry.LastWriteTime ? entry.CreationTime : entry.LastWriteTime,
126127
LastWriteTime = entry.LastWriteTime,
127128
};
128129

0 commit comments

Comments
 (0)