aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb/epgcache.cpp
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-01-10 19:12:30 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2007-01-10 19:12:30 +0000
commit5bff4bdd4a2877410b8e6daa070641fed1ab8ce1 (patch)
treeaf51b6e8ae68f59e6d3cdc30e8d6e5af54a7b878 /lib/dvb/epgcache.cpp
parentcc99466a13cc22eef20e50738cb3a6412d2c4a80 (diff)
downloadenigma2-5bff4bdd4a2877410b8e6daa070641fed1ab8ce1.tar.gz
enigma2-5bff4bdd4a2877410b8e6daa070641fed1ab8ce1.zip
non critical fixes (better memory handling)
Diffstat (limited to 'lib/dvb/epgcache.cpp')
-rw-r--r--lib/dvb/epgcache.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/lib/dvb/epgcache.cpp b/lib/dvb/epgcache.cpp
index 49b804b6..46311f60 100644
--- a/lib/dvb/epgcache.cpp
+++ b/lib/dvb/epgcache.cpp
@@ -516,10 +516,11 @@ void eEPGCache::sectionRead(const __u8 *data, int source, channel_data *channel)
if ( tm_it_tmp->first == TM ) // just update eventdata
{
// exempt memory
- delete ev_it->second;
+ eventData *tmp = ev_it->second;
ev_it->second = tm_it_tmp->second =
new eventData(eit_event, eit_event_size, source);
FixOverlapping(servicemap, TM, duration, tm_it_tmp, service);
+ delete tmp;
goto next;
}
else // event has new event begin time
@@ -562,25 +563,29 @@ void eEPGCache::sectionRead(const __u8 *data, int source, channel_data *channel)
#endif
if (ev_erase_count > 0 && tm_erase_count > 0) // 2 different pairs have been removed
{
- // exempt memory
- delete ev_it->second;
- delete tm_it->second;
+ eventData *tmp1 = ev_it->second,
+ *tmp2 = tm_it->second;
ev_it->second=evt;
tm_it->second=evt;
+ // exempt memory
+ delete tmp1;
+ delete tmp2;
}
else if (ev_erase_count == 0 && tm_erase_count > 0)
{
- // exempt memory
- delete ev_it->second;
+ eventData *tmp = ev_it->second;
tm_it=prevTimeIt=servicemap.second.insert( prevTimeIt, std::pair<const time_t, eventData*>( TM, evt ) );
ev_it->second=evt;
+ // exempt memory
+ delete tmp;
}
else if (ev_erase_count > 0 && tm_erase_count == 0)
{
- // exempt memory
- delete tm_it->second;
+ eventData *tmp = tm_it->second;
ev_it=prevEventIt=servicemap.first.insert( prevEventIt, std::pair<const __u16, eventData*>( event_id, evt) );
tm_it->second=evt;
+ // exempt memory
+ delete tmp;
}
else // added new eventData
{