Double Commander is a free cross platform open source file manager with two panels side by side. https://doublecmd.sourceforge.io
  • Pascal 94.5%
  • Assembly 4.1%
  • HTML 0.5%
  • Shell 0.4%
  • C 0.2%
  • Other 0.1%
Find a file
EH 197028a1ed FIX: Zip plugin - allow cancelling TAR archive packing mid-operation (#2874)
* 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 6123a21ed0)
2026-06-13 23:56:48 +03:00
.github UPD: Release workflow 2026-01-05 16:35:44 +03:00
components FIX: Virtual terminal - AutoFollow off-by-one and clear resets viewport (#2876) 2026-06-13 23:54:17 +03:00
default ADD: MultiArc - FallBackArchivers (#1837) 2024-09-17 00:07:21 +03:00
doc UPD: Minimal Lazarus version 2026-03-31 19:13:26 +03:00
doublecmd.app/Contents UPD: new Icon for macOS, better than before on macOS 15, issue #2552 2025-10-20 17:23:01 +08:00
highlighters ADD: JSONC highlighter (issue #2898) 2026-06-01 01:16:12 +03:00
install FIX: Revision number 2026-01-11 14:23:47 +03:00
language UPD: Korean language file (fixes #2901) 2026-06-11 23:39:57 +03:00
libraries/src UPD: libunrar build script 2025-06-28 16:28:21 +03:00
pixmaps UPD: DCTheme icon theme 2026-06-13 23:55:27 +03:00
plugins FIX: Zip plugin - allow cancelling TAR archive packing mid-operation (#2874) 2026-06-13 23:56:48 +03:00
scripts FIX: RabbitVCS 0.16 compatibility 2021-02-20 20:32:36 +00:00
sdk UPD: C SDK (#2634) 2025-12-13 15:48:41 +03:00
src FIX: SyncDirs — enable smooth progress bars (#2893) 2026-06-13 23:53:40 +03:00
tools FIX: JSON-Pack utility 2023-07-11 23:03:27 +03:00
units DEL: Don't read Lazarus revision 2021-08-21 11:17:35 +03:00
.gitattributes FIX: Unset 'text' attribute for '*.bat' 2023-01-19 21:12:20 +03:00
.gitignore FIX: Main window loses focus after confirming file/folder deletion (fixes #2160) (#2760) 2026-03-14 11:12:32 +03:00
build.bat UPD: Line-endings 2023-01-19 21:17:15 +03:00
build.sh UPD: Build mode name, build scripts 2021-06-05 21:50:30 +03:00
clean.bat UPD: Rename DCPcrypt to KAScrypt 2023-12-04 20:25:15 +03:00
clean.sh Update clean.sh (#1504) 2024-03-02 17:32:51 +03:00
doublecmd.help UPD: Enable Chinese online help 2026-01-17 18:47:06 +03:00
doublecmd.lpg UPD: Rename DCPcrypt to KAScrypt 2023-12-04 20:25:15 +03:00
doublecmd.png UPD: Use new icon also in trunk 2010-01-15 11:26:14 +00:00
doublecmd.sh ADD: Pass command line arguments 2023-05-15 23:08:27 +03:00
fpmake.pp ADD: MacCloud to fpmake.pp 2026-03-15 11:44:53 +03:00
LICENSE.md ADD: GitHub license file (fixes #660) 2022-11-30 20:31:09 +03:00
pinyin.tbl UPD: Rename Pinyin table file 2021-08-29 12:54:21 +03:00
README.md UPD: Added clarifications (#713) 2022-12-12 19:42:27 +03:00

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.