diff --git a/src/karchive.cpp b/src/karchive.cpp --- a/src/karchive.cpp +++ b/src/karchive.cpp @@ -826,12 +826,18 @@ void KArchiveDirectory::addEntry(KArchiveEntry *entry) { - if (d->entries.value(entry->name())) { - /*qCWarning(KArchiveLog) << "directory " << name() - << "has entry" << entry->name() << "already";*/ - delete entry; + if (d->entries.value(entry->name()) == entry) { + qCWarning(KArchiveLog) << "directory " << name() + << "has same entry" << entry->name() << "already"; return; } + + if (d->entries.contains(entry->name())) { + qCWarning(KArchiveLog) << "directory " << name() + << "has different entry" << entry->name() << "already"; + delete d->entries.take(entry->name()); + } + d->entries.insert(entry->name(), entry); }