diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-01-10 19:12:30 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2007-01-10 19:12:30 +0000 |
| commit | 5bff4bdd4a2877410b8e6daa070641fed1ab8ce1 (patch) | |
| tree | af51b6e8ae68f59e6d3cdc30e8d6e5af54a7b878 /lib/dvb/epgcache.cpp | |
| parent | cc99466a13cc22eef20e50738cb3a6412d2c4a80 (diff) | |
| download | enigma2-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.cpp | 21 |
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 { |
