aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/archive/decoderarchivefactory.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-05-06 19:28:35 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-05-06 19:28:35 +0000
commit8f97d76080b9617fc67d01f2bc8de36a5b0a1175 (patch)
treeb0b9287109dd54a3b3dc709c72c0dc6a69d03d29 /src/plugins/Input/archive/decoderarchivefactory.cpp
parent23585bba435a25c59433f084e9ba2f5a212d2c21 (diff)
downloadqmmp-8f97d76080b9617fc67d01f2bc8de36a5b0a1175.tar.gz
qmmp-8f97d76080b9617fc67d01f2bc8de36a5b0a1175.tar.bz2
qmmp-8f97d76080b9617fc67d01f2bc8de36a5b0a1175.zip
archive: fixed crash on some corrupted archives (#998)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8861 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/archive/decoderarchivefactory.cpp')
-rw-r--r--src/plugins/Input/archive/decoderarchivefactory.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/plugins/Input/archive/decoderarchivefactory.cpp b/src/plugins/Input/archive/decoderarchivefactory.cpp
index 3b83616c2..119e30d83 100644
--- a/src/plugins/Input/archive/decoderarchivefactory.cpp
+++ b/src/plugins/Input/archive/decoderarchivefactory.cpp
@@ -112,6 +112,14 @@ QList<TrackInfo *> DecoderArchiveFactory::createPlayList(const QString &path, Tr
ArchiveInputDevice dev(a, entry, nullptr);
ArchiveTagReader reader(&dev, list.last()->path());
+ if(!dev.isOpen())
+ {
+ qDeleteAll(list);
+ list.clear();
+ archive_read_free(a);
+ return list;
+ }
+
if(parts & TrackInfo::MetaData)
list.last()->setValues(reader.metaData());