From: Andreas Monzner Date: Wed, 24 May 2006 13:17:36 +0000 (+0000) Subject: fix segfault on fast zapping (faster then a pmt is received) X-Git-Tag: 2.6.0~3390 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/4f58fdeaa55c472f4cbc69e57c43e9095360008b fix segfault on fast zapping (faster then a pmt is received) --- diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp index 16f93681..5301df9b 100644 --- a/lib/dvb/pmt.cpp +++ b/lib/dvb/pmt.cpp @@ -449,7 +449,8 @@ int eDVBServicePMTHandler::tune(eServiceReferenceDVB &ref, int use_decode_demux, ref.getChannelID(chid); res = m_resourceManager->allocateChannel(chid, m_channel); eDebug("allocate Channel: res %d", res); - eDVBCIInterfaces::getInstance()->addPMTHandler(this); + if (!res) + eDVBCIInterfaces::getInstance()->addPMTHandler(this); } else { eDVBMetaParser parser; @@ -537,10 +538,12 @@ void eDVBServicePMTHandler::free() ePtr > ptr; m_PMT.getCurrent(ptr); eDVBCAService::unregister_service(m_reference, demuxes, ptr); - eDVBCIInterfaces::getInstance()->removePMTHandler(this); m_ca_servicePtr = 0; } + if (m_channel) + eDVBCIInterfaces::getInstance()->removePMTHandler(this); + if (m_pvr_channel) { m_pvr_channel->stopFile();