diff --git a/NEWS b/NEWS index 741938b37..c8742f395 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,6 @@ ver 0.21.21 (not yet released) +* archive + - iso9660: skip empty file names to work around libcdio bug * decoder - gme: ignore empty tags * output diff --git a/src/archive/plugins/Iso9660ArchivePlugin.cxx b/src/archive/plugins/Iso9660ArchivePlugin.cxx index 50cea2aef..6cb307bd4 100644 --- a/src/archive/plugins/Iso9660ArchivePlugin.cxx +++ b/src/archive/plugins/Iso9660ArchivePlugin.cxx @@ -28,6 +28,7 @@ #include "input/InputStream.hxx" #include "fs/Path.hxx" #include "util/RuntimeError.hxx" +#include "util/StringCompare.hxx" #include @@ -93,7 +94,9 @@ Iso9660ArchiveFile::Visit(char *path, size_t length, size_t capacity, auto *statbuf = (iso9660_stat_t *) _cdio_list_node_data(entnode); const char *filename = statbuf->filename; - if (PathTraitsUTF8::IsSpecialFilename(filename)) + if (StringIsEmpty(filename) || + PathTraitsUTF8::IsSpecialFilename(filename)) + /* skip empty names (libcdio bug?) */ /* skip special names like "." and ".." */ continue;