Fix #6377: two tarballs with the same folder in them were considered as one (#11855)

(cherry picked from commit 0c81579363)
pull/642/head
Patric Stout 5 months ago committed by Jonathan G Rennison
parent b721dbf850
commit c021c80b08

@ -525,6 +525,9 @@ bool TarScanner::AddFile(const std::string &filename, size_t basepath_length, co
_tar_list[this->subdir][filename] = std::string{};
std::string filename_base = filename;
SimplifyFileName(filename_base.data());
TarLinkList links; ///< Temporary list to collect links
TarHeader th;
@ -583,7 +586,7 @@ bool TarScanner::AddFile(const std::string &filename, size_t basepath_length, co
SimplifyFileName(name);
DEBUG(misc, 6, "Found file in tar: %s (" PRINTF_SIZE " bytes, " PRINTF_SIZE " offset)", name, skip, pos);
if (_tar_filelist[this->subdir].insert(TarFileList::value_type(name, entry)).second) num++;
if (_tar_filelist[this->subdir].insert(TarFileList::value_type(filename_base + PATHSEPCHAR + name, entry)).second) num++;
break;
}
@ -653,7 +656,7 @@ bool TarScanner::AddFile(const std::string &filename, size_t basepath_length, co
/* Store links in temporary list */
DEBUG(misc, 6, "Found link in tar: %s -> %s", name, dest);
links.insert(TarLinkList::value_type(name, dest));
links.insert(TarLinkList::value_type(filename_base + PATHSEPCHAR + name, filename_base + PATHSEPCHAR + dest));
break;
}

Loading…
Cancel
Save