From 4f58fdeaa55c472f4cbc69e57c43e9095360008b Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Wed, 24 May 2006 13:17:36 +0000 Subject: [PATCH] fix segfault on fast zapping (faster then a pmt is received) --- lib/dvb/pmt.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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(); -- 2.30.2