aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2017-01-25 18:11:46 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2017-01-25 18:11:46 +0000
commitb1470c4a3eaa8ce7eb4b33e7c9e4a421a404795a (patch)
tree1b65b67f8444e8c67ed8938fca8a10415969969a
parent0fc031da9ab10d92b2c21f11239de7868340aa85 (diff)
downloadqmmp-b1470c4a3eaa8ce7eb4b33e7c9e4a421a404795a.tar.gz
qmmp-b1470c4a3eaa8ce7eb4b33e7c9e4a421a404795a.tar.bz2
qmmp-b1470c4a3eaa8ce7eb4b33e7c9e4a421a404795a.zip
fixed possible segmentation fault inside qmmp audio engine (#896)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7003 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/qmmp/qmmpaudioengine.cpp10
1 files changed, 3 insertions, 7 deletions
diff --git a/src/qmmp/qmmpaudioengine.cpp b/src/qmmp/qmmpaudioengine.cpp
index 4de20ed72..0b7aa8aa5 100644
--- a/src/qmmp/qmmpaudioengine.cpp
+++ b/src/qmmp/qmmpaudioengine.cpp
@@ -134,13 +134,9 @@ bool QmmpAudioEngine::enqueue(InputSource *source)
if(!factory && !source->url().contains("://"))
factory = Decoder::findByFilePath(source->url(), m_settings->determineFileTypeByContent());
if(!factory)
- {
- if((factory = Decoder::findByMime(source->contentType())))
- {
- if(!factory->canDecode(source->ioDevice()))
- factory = 0;
- }
- }
+ factory = Decoder::findByMime(source->contentType());
+ if(factory && !factory->properties().noInput && source->ioDevice() && source->url().contains("://"))
+ factory = (factory->canDecode(source->ioDevice()) ? factory : 0);
if(!factory && source->ioDevice() && source->url().contains("://")) //ignore content of local files
factory = Decoder::findByContent(source->ioDevice());
if(!factory && source->url().contains("://"))