From 7f7a2782099784dc69f46f0be76cf9ed126d6e82 Mon Sep 17 00:00:00 2001
From: Sebastião Guerra <sebastiao.luiz.guerra@gmail.com>
Date: Mon, 7 Sep 2026 07:38:07 -0300
Subject: Fix duplicate entries when updating TAR archives
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Sebastião Guerra <sebastiao.luiz.guerra@gmail.com>
---
 ark/tar.cpp | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/ark/tar.cpp b/ark/tar.cpp
index 7ae4d39b..447a152e 100644
--- a/ark/tar.cpp
+++ b/ark/tar.cpp
@@ -455,14 +455,33 @@ void TarArch::deleteOldFiles(const TQStringList &urls, bool bAddOnlyNew)
   // because tar is broken. Used when appending: see addFile.
 {
   TQStringList list;
-  TQString str;
 
   TQStringList::ConstIterator iter;
   for (iter = urls.begin(); iter != urls.end(); ++iter )
   {
     KURL url( *iter );
+    TQString str = url.fileName();
     // find the file entry in the archive listing
-    const FileLVI * lv = m_gui->fileList()->item( url.fileName() );
+    const FileLVI *lv = nullptr;
+    TQListViewItemIterator itemIt( m_gui->fileList() );
+
+    while ( itemIt.current() )
+    {
+      const FileLVI *item =
+        static_cast<const FileLVI *>( itemIt.current() );
+      const TQString itemName = item->fileName();
+      const TQString expectedName =
+        itemName.endsWith( "/" ) ? (str + "/") : str;
+
+      if ( itemName == expectedName )
+      {
+        lv = item;
+        break;
+      }
+
+      ++itemIt;
+    }
+
     if ( !lv ) // it isn't in there, so skip it.
       continue;
 
-- 
cgit v1.2.3

