aboutsummaryrefslogtreecommitdiffstats
path: root/packages/enigma/enigma
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.ne>2007-11-21 12:47:35 +0000
committerFelix Domke <tmbinc@elitedvb.ne>2007-11-21 12:47:35 +0000
commit657b0a2a29e811fcf188ab115c541fc71447818e (patch)
treedb9c0f949eef75c0a3ab29df093112c0ed639ead /packages/enigma/enigma
parentac95295619f99e6e8d33f54304d157d6d356fa86 (diff)
downloadopenembedded-657b0a2a29e811fcf188ab115c541fc71447818e.tar.gz
enigma: backport subtitle memleak fix
Diffstat (limited to 'packages/enigma/enigma')
-rw-r--r--packages/enigma/enigma/subtitlefix_backport.diff36
1 files changed, 25 insertions, 11 deletions
diff --git a/packages/enigma/enigma/subtitlefix_backport.diff b/packages/enigma/enigma/subtitlefix_backport.diff
index d84f51383c..f1c84e98a0 100644
--- a/packages/enigma/enigma/subtitlefix_backport.diff
+++ b/packages/enigma/enigma/subtitlefix_backport.diff
@@ -1,20 +1,26 @@
-diff -Naur enigma_org/lib/dvb/subtitle.cpp enigma/lib/dvb/subtitle.cpp
---- enigma_org/lib/dvb/subtitle.cpp 2005-08-02 22:35:36.000000000 +0200
-+++ enigma/lib/dvb/subtitle.cpp 2007-10-19 11:55:36.000000000 +0200
-@@ -337,6 +337,12 @@
+--- enigma_org/lib/dvb/subtitle.cpp 2 Aug 2005 20:35:36 -0000 1.13
++++ enigma/lib/dvb/subtitle.cpp 21 Nov 2007 11:52:51 -0000
+@@ -337,6 +337,19 @@
delete page->page_regions;
page->page_regions = p;
}
+ while (page->regions)
+ {
+ struct subtitle_region *p = page->regions->next;
++ while(page->regions->region_objects)
++ {
++ subtitle_region_object *ob = page->regions->region_objects->next;
++ delete page->regions->region_objects;
++ page->regions->region_objects = ob;
++ }
++ delete [] page->regions->region_buffer;
+ delete page->regions;
+ page->regions = p;
+ }
}
// eDebug("new page.. (%d)", page_state);
-@@ -352,7 +358,14 @@
+@@ -352,7 +365,14 @@
// go to last entry
while (*r)
r = &(*r)->next;
@@ -30,7 +36,7 @@ diff -Naur enigma_org/lib/dvb/subtitle.cpp enigma/lib/dvb/subtitle.cpp
while (processed_length < segment_length)
{
struct subtitle_page_region *pr;
-@@ -763,20 +776,16 @@
+@@ -763,20 +783,16 @@
#if 1
struct subtitle_page *page = sub->pages;
if ( page )
@@ -54,7 +60,7 @@ diff -Naur enigma_org/lib/dvb/subtitle.cpp enigma/lib/dvb/subtitle.cpp
//eDebug("----------- end of display set");
//eDebug("active pages:");
while (page)
-@@ -878,7 +887,6 @@
+@@ -878,7 +894,6 @@
return;
}
@@ -62,7 +68,7 @@ diff -Naur enigma_org/lib/dvb/subtitle.cpp enigma/lib/dvb/subtitle.cpp
//eDebug("iterating regions..");
/* iterate all regions in this pcs */
struct subtitle_page_region *region = page->page_regions;
-@@ -902,20 +910,19 @@
+@@ -902,20 +917,19 @@
{
if (main_clut_id != clut_id)
{
@@ -87,9 +93,8 @@ diff -Naur enigma_org/lib/dvb/subtitle.cpp enigma/lib/dvb/subtitle.cpp
if ((x0 < 0) || (y0 < 0) || (x0 > sub->screen_width) || (x0 > sub->screen_height))
continue;
-diff -Naur enigma_org/lib/dvb/subtitling.cpp enigma/lib/dvb/subtitling.cpp
---- enigma_org/lib/dvb/subtitling.cpp 2005-08-02 22:35:36.000000000 +0200
-+++ enigma/lib/dvb/subtitling.cpp 2007-10-19 11:57:24.000000000 +0200
+--- enigma_org/lib/dvb/subtitling.cpp 2 Aug 2005 20:35:36 -0000 1.12
++++ enigma/lib/dvb/subtitling.cpp 21 Nov 2007 11:52:51 -0000
@@ -67,26 +67,26 @@
unsigned long long current = 0;
if (Decoder::getSTC(current))
@@ -169,3 +174,12 @@ diff -Naur enigma_org/lib/dvb/subtitling.cpp enigma/lib/dvb/subtitling.cpp
}
void eSubtitleWidget::gotData(int what)
+@@ -377,7 +383,7 @@
+ while (!queue.empty())
+ {
+ pes_packet_s pkt = queue.front();
+- queue.front();
++ queue.pop();
+ delete [] pkt.pkt;
+ }
+ delete subtitle;