diff --git a/src/archive/plugins/Iso9660ArchivePlugin.cxx b/src/archive/plugins/Iso9660ArchivePlugin.cxx
index 6c71f9ba0..f56c608b1 100644
--- a/src/archive/plugins/Iso9660ArchivePlugin.cxx
+++ b/src/archive/plugins/Iso9660ArchivePlugin.cxx
@@ -98,15 +98,15 @@ Iso9660ArchiveFile::Visit(const char *psz_path, ArchiveVisitor &visitor)
 		auto *statbuf = (iso9660_stat_t *)
 			_cdio_list_node_data(entnode);
 		const char *filename = statbuf->filename;
+		if (strcmp(filename, ".") == 0 || strcmp(filename, "..") == 0)
+			continue;
 
 		strcpy(pathname, psz_path);
 		strcat(pathname, filename);
 
 		if (iso9660_stat_s::_STAT_DIR == statbuf->type ) {
-			if (strcmp(filename, ".") && strcmp(filename, "..")) {
-				strcat(pathname, "/");
-				Visit(pathname, visitor);
-			}
+			strcat(pathname, "/");
+			Visit(pathname, visitor);
 		} else {
 			//remove leading /
 			visitor.VisitArchiveEntry(pathname + 1);