- Pascal 94.5%
- Assembly 4.1%
- HTML 0.5%
- Shell 0.4%
- C 0.2%
- Other 0.1%
* FIX: zip plugin - allow cancelling TAR archive packing mid-operation
TAbTarArchive.SaveArchive iterated all items without ever checking
the abort flag, making it impossible to cancel a TAR/TGZ/TBZ2 pack
operation until all files had been written.
Add a DoArchiveProgress call with abort check after each item in the
save loop, identical to the pattern already used in TAbZipArchive.SaveArchive
(abziptyp.pas) and in all extract loops (abarctyp.pas).
When the user cancels, EAbUserAbort is raised, caught in PackFilesW,
and the incomplete archive is deleted if it did not exist before packing.
* FIX: zip plugin - prevent crash on TAR abort inside GZip archive
When TAbUserAbort propagates out of TAbTarArchive.SaveArchive (e.g.
from the abort check added to the save loop), it exits the IsGzippedTar
branch of TAbGzipArchive.SaveArchive without calling SwapToGzip. The
outer finally block then compares FStream (which equals FTarStream,
possibly nil) with NewStream (FGzStream) and incorrectly frees
NewStream. The destructor later calls SwapToGzip (restoring FStream to
the already-freed FGzStream) and then frees FStream a second time,
causing an access violation.
Fix: compare FGzStream instead of FStream in the finally condition.
FGzStream always holds the original gzip stream reference and is never
changed by SwapToTar/SwapToGzip, so the NewStream ownership check is
correct regardless of which swap state the archive is in.
---------
Co-authored-by: heredie <heredie@localhost>
(cherry picked from commit
|
||
|---|---|---|
| .github | ||
| components | ||
| default | ||
| doc | ||
| doublecmd.app/Contents | ||
| highlighters | ||
| install | ||
| language | ||
| libraries/src | ||
| pixmaps | ||
| plugins | ||
| scripts | ||
| sdk | ||
| src | ||
| tools | ||
| units | ||
| .gitattributes | ||
| .gitignore | ||
| build.bat | ||
| build.sh | ||
| clean.bat | ||
| clean.sh | ||
| doublecmd.help | ||
| doublecmd.lpg | ||
| doublecmd.png | ||
| doublecmd.sh | ||
| fpmake.pp | ||
| LICENSE.md | ||
| pinyin.tbl | ||
| README.md | ||
Double Commander is a free cross-platform open source file manager with two panels side by side (or one above the other). It is inspired by Total Commander and features some innovative new ideas.
Double Commander can be run on several platforms and operating systems. It supports 32-bit and 64-bit processors. See Supported platforms for a complete list.
See Double Commander in action in the Screenshot Gallery.
Where to start
Download
Go to the Double Commander download page to download the latest release.
You can check the latest version on the Versions page.
See if Double Commander is supported for your platform on the Supported platforms page.
Develop
For more information on the development of Double Commander, see the Development page.
Discuss
Go to our forum for discussions. There are English and Russian sections.
If you want to stay up-to-date with the project, you can check out the available news feeds.