Only in libdvbpsi4-0.1.5-mod: Makefile
Only in libdvbpsi4-0.1.5-mod: config.h
Only in libdvbpsi4-0.1.5-mod: config.log
Only in libdvbpsi4-0.1.5-mod: config.status
Only in libdvbpsi4-0.1.5-mod/debian: Makefile
Only in libdvbpsi4-0.1.5-mod/doc: Makefile
Only in libdvbpsi4-0.1.5-mod/examples: .deps
Only in libdvbpsi4-0.1.5-mod/examples: .libs
Only in libdvbpsi4-0.1.5-mod/examples: Makefile
Only in libdvbpsi4-0.1.5-mod/examples: decode_pat.exe
Only in libdvbpsi4-0.1.5-mod/examples: decode_pat.o
Only in libdvbpsi4-0.1.5-mod/examples: decode_pmt.exe
Only in libdvbpsi4-0.1.5-mod/examples: decode_pmt.o
Only in libdvbpsi4-0.1.5-mod/examples: decode_sdt.exe
Only in libdvbpsi4-0.1.5-mod/examples: decode_sdt.o
Only in libdvbpsi4-0.1.5-mod: libtool
Only in libdvbpsi4-0.1.5-mod/misc: .deps
Only in libdvbpsi4-0.1.5-mod/misc: .libs
Only in libdvbpsi4-0.1.5-mod/misc: Makefile
Only in libdvbpsi4-0.1.5-mod/misc: gen_crc.exe
Only in libdvbpsi4-0.1.5-mod/misc: gen_crc.o
Only in libdvbpsi4-0.1.5-mod/misc: gen_pat.exe
Only in libdvbpsi4-0.1.5-mod/misc: gen_pat.o
Only in libdvbpsi4-0.1.5-mod/misc: gen_pmt.exe
Only in libdvbpsi4-0.1.5-mod/misc: gen_pmt.o
Only in libdvbpsi4-0.1.5-mod/misc: test_dr.exe
Only in libdvbpsi4-0.1.5-mod/misc: test_dr.o
Only in libdvbpsi4-0.1.5-mod/src: .deps
Only in libdvbpsi4-0.1.5-mod/src: .libs
Only in libdvbpsi4-0.1.5-mod/src: Makefile
diff -u -r libdvbpsi4-0.1.5/src/demux.c libdvbpsi4-0.1.5-mod/src/demux.c
--- libdvbpsi4-0.1.5/src/demux.c	2005-05-17 18:35:24.000000000 +0100
+++ libdvbpsi4-0.1.5-mod/src/demux.c	2007-02-27 13:11:57.163329600 +0000
@@ -71,6 +71,7 @@
   h_dvbpsi->i_continuity_counter = 31;
   h_dvbpsi->b_discontinuity = 1;
   h_dvbpsi->p_current_section = NULL;
+  h_dvbpsi->p_free_sections = NULL;
 
   /* Sutables demux configuration */
   p_demux->p_decoder = h_dvbpsi;
@@ -138,7 +139,7 @@
   }
   else
   {
-    dvbpsi_DeletePSISections(p_section);
+    dvbpsi_ReleasePSISections(p_decoder, p_section);
   }
 }
 
@@ -168,5 +169,9 @@
   free(p_demux);
   if(h_dvbpsi->p_current_section)
     dvbpsi_DeletePSISections(h_dvbpsi->p_current_section);
+
+  if(h_dvbpsi->p_free_sections)
+    dvbpsi_DeletePSISections(h_dvbpsi->p_free_sections);    
+
   free(h_dvbpsi);
 }
Only in libdvbpsi4-0.1.5-mod/src: demux.lo
Only in libdvbpsi4-0.1.5-mod/src: demux.o
Only in libdvbpsi4-0.1.5-mod/src: descriptor.lo
Only in libdvbpsi4-0.1.5-mod/src: descriptor.o
Only in libdvbpsi4-0.1.5-mod/src: dr_02.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_02.o
Only in libdvbpsi4-0.1.5-mod/src: dr_03.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_03.o
Only in libdvbpsi4-0.1.5-mod/src: dr_04.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_04.o
Only in libdvbpsi4-0.1.5-mod/src: dr_05.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_05.o
Only in libdvbpsi4-0.1.5-mod/src: dr_06.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_06.o
Only in libdvbpsi4-0.1.5-mod/src: dr_07.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_07.o
Only in libdvbpsi4-0.1.5-mod/src: dr_08.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_08.o
Only in libdvbpsi4-0.1.5-mod/src: dr_09.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_09.o
Only in libdvbpsi4-0.1.5-mod/src: dr_0a.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_0a.o
Only in libdvbpsi4-0.1.5-mod/src: dr_0b.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_0b.o
Only in libdvbpsi4-0.1.5-mod/src: dr_0c.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_0c.o
Only in libdvbpsi4-0.1.5-mod/src: dr_0d.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_0d.o
Only in libdvbpsi4-0.1.5-mod/src: dr_0e.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_0e.o
Only in libdvbpsi4-0.1.5-mod/src: dr_0f.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_0f.o
Only in libdvbpsi4-0.1.5-mod/src: dr_42.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_42.o
Only in libdvbpsi4-0.1.5-mod/src: dr_47.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_47.o
Only in libdvbpsi4-0.1.5-mod/src: dr_48.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_48.o
Only in libdvbpsi4-0.1.5-mod/src: dr_4d.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_4d.o
Only in libdvbpsi4-0.1.5-mod/src: dr_4e.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_4e.o
Only in libdvbpsi4-0.1.5-mod/src: dr_52.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_52.o
Only in libdvbpsi4-0.1.5-mod/src: dr_55.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_55.o
Only in libdvbpsi4-0.1.5-mod/src: dr_56.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_56.o
Only in libdvbpsi4-0.1.5-mod/src: dr_59.lo
Only in libdvbpsi4-0.1.5-mod/src: dr_59.o
diff -u -r libdvbpsi4-0.1.5/src/dvbpsi.c libdvbpsi4-0.1.5-mod/src/dvbpsi.c
--- libdvbpsi4-0.1.5/src/dvbpsi.c	2005-07-04 16:21:29.000000000 +0100
+++ libdvbpsi4-0.1.5-mod/src/dvbpsi.c	2007-02-27 13:09:38.367662000 +0000
@@ -87,7 +87,7 @@
     h_dvbpsi->b_discontinuity = 1;
     if(h_dvbpsi->p_current_section)
     {
-      dvbpsi_DeletePSISections(h_dvbpsi->p_current_section);
+      dvbpsi_ReleasePSISections(h_dvbpsi, h_dvbpsi->p_current_section);
       h_dvbpsi->p_current_section = NULL;
     }
   }
@@ -122,7 +122,7 @@
       /* Allocation of the structure */
       h_dvbpsi->p_current_section
                         = p_section
-                        = dvbpsi_NewPSISection(h_dvbpsi->i_section_max_size);
+                        = dvbpsi_ClaimPSISection(h_dvbpsi, h_dvbpsi->i_section_max_size);
       /* Update the position in the packet */
       p_payload_pos = p_new_pos;
       /* New section is being handled */
@@ -164,7 +164,7 @@
         if(h_dvbpsi->i_need > h_dvbpsi->i_section_max_size - 3)
         {
           DVBPSI_ERROR("PSI decoder", "PSI section too long");
-          dvbpsi_DeletePSISections(p_section);
+          dvbpsi_ReleasePSISections(h_dvbpsi, p_section);
           h_dvbpsi->p_current_section = NULL;
           /* If there is a new section not being handled then go forward
              in the packet */
@@ -172,7 +172,7 @@
           {
             h_dvbpsi->p_current_section
                         = p_section
-                        = dvbpsi_NewPSISection(h_dvbpsi->i_section_max_size);
+                        = dvbpsi_ClaimPSISection(h_dvbpsi, h_dvbpsi->i_section_max_size);
             p_payload_pos = p_new_pos;
             p_new_pos = NULL;
             h_dvbpsi->i_need = 3;
@@ -219,7 +219,7 @@
         else
         {
           /* PSI section isn't valid => trash it */
-          dvbpsi_DeletePSISections(p_section);
+          dvbpsi_ReleasePSISections(h_dvbpsi, p_section);
           h_dvbpsi->p_current_section = NULL;
         }
 
@@ -235,7 +235,7 @@
         {
           h_dvbpsi->p_current_section
                         = p_section
-                        = dvbpsi_NewPSISection(h_dvbpsi->i_section_max_size);
+                        = dvbpsi_ClaimPSISection(h_dvbpsi, h_dvbpsi->i_section_max_size);
           p_payload_pos = p_new_pos;
           p_new_pos = NULL;
           h_dvbpsi->i_need = 3;
diff -u -r libdvbpsi4-0.1.5/src/dvbpsi.h libdvbpsi4-0.1.5-mod/src/dvbpsi.h
--- libdvbpsi4-0.1.5/src/dvbpsi.h	2004-06-01 17:42:49.000000000 +0100
+++ libdvbpsi4-0.1.5-mod/src/dvbpsi.h	2007-02-27 12:57:16.964896900 +0000
@@ -118,6 +118,8 @@
   int                           b_discontinuity;        /*!< Discontinuity
                                                              flag */
 
+  dvbpsi_psi_section_t *        p_free_sections;        /*!< Available sections */
+                                                             
   dvbpsi_psi_section_t *        p_current_section;      /*!< Current section */
   int                           i_need;                 /*!< Bytes needed */
   int                           b_complete_header;      /*!< Flag for header
Only in libdvbpsi4-0.1.5-mod/src: dvbpsi.lo
Only in libdvbpsi4-0.1.5-mod/src: dvbpsi.o
Only in libdvbpsi4-0.1.5-mod/src: eit.lo
Only in libdvbpsi4-0.1.5-mod/src: eit.o
Only in libdvbpsi4-0.1.5-mod/src: libdvbpsi.la
Only in libdvbpsi4-0.1.5-mod/src: pat.lo
Only in libdvbpsi4-0.1.5-mod/src: pat.o
Only in libdvbpsi4-0.1.5-mod/src: pmt.lo
Only in libdvbpsi4-0.1.5-mod/src: pmt.o
diff -u -r libdvbpsi4-0.1.5/src/psi.c libdvbpsi4-0.1.5-mod/src/psi.c
--- libdvbpsi4-0.1.5/src/psi.c	2005-05-17 18:35:24.000000000 +0100
+++ libdvbpsi4-0.1.5-mod/src/psi.c	2007-02-27 13:02:08.315588900 +0000
@@ -136,6 +136,59 @@
   0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
 };
 
+/*****************************************************************************
+ * dvbpsi_ClaimPSISection
+ *****************************************************************************
+ * Return a previously released section if one is available or create a new one.
+ *****************************************************************************/
+dvbpsi_psi_section_t * dvbpsi_ClaimPSISection(dvbpsi_handle h_dvbpsi, int i_max_size)
+{
+    dvbpsi_psi_section_t *p_current = h_dvbpsi->p_free_sections;
+    dvbpsi_psi_section_t *p_prev = NULL;
+
+    while (p_current)
+    {
+        if (p_current->i_max_size == i_max_size)
+        {
+            p_current->p_payload_end = p_current->p_data;
+            
+            if (p_prev)
+            {
+                p_prev->p_next = p_current->p_next;
+            }
+            else
+            {
+                h_dvbpsi->p_free_sections = p_current->p_next;
+            }
+            
+            p_current->p_next = NULL;
+            return p_current;
+        }
+        p_prev = p_current;
+        p_current = p_current->p_next;
+    }
+
+    return dvbpsi_NewPSISection(i_max_size);
+}
+
+/*****************************************************************************
+ * dvbpsi_ReleasePSISections
+ *****************************************************************************
+ * Release sections so they can be reused.
+ *****************************************************************************/
+void dvbpsi_ReleasePSISections(dvbpsi_handle h_dvbpsi, dvbpsi_psi_section_t * p_section)
+{
+    dvbpsi_psi_section_t *p_tail = p_section;
+    /* find the last section in the sections to release */
+    while (p_tail->p_next)
+    {
+        p_tail = p_tail->p_next;
+    }
+    
+    p_tail->p_next = h_dvbpsi->p_free_sections;
+    h_dvbpsi->p_free_sections = p_section;
+}
+
 
 /*****************************************************************************
  * dvbpsi_NewPSISection
@@ -155,6 +208,7 @@
 
     if(p_section->p_data != NULL)
     {
+      p_section->i_max_size = i_max_size;
       p_section->p_payload_end = p_section->p_data;
     }
     else
@@ -169,7 +223,6 @@
   return p_section;
 }
 
-
 /*****************************************************************************
  * dvbpsi_DeletePSISections
  *****************************************************************************
diff -u -r libdvbpsi4-0.1.5/src/psi.h libdvbpsi4-0.1.5-mod/src/psi.h
--- libdvbpsi4-0.1.5/src/psi.h	2004-06-01 17:42:49.000000000 +0100
+++ libdvbpsi4-0.1.5-mod/src/psi.h	2007-02-27 13:03:55.193702900 +0000
@@ -92,12 +92,37 @@
   /* used if b_syntax_indicator is true */
   uint32_t      i_crc;                  /*!< CRC_32 */
 
+  /* for reusing this section */
+  uint32_t      i_max_size;             /*!< maximum size of p_data */
+  
   /* list handling */
   struct dvbpsi_psi_section_s *         p_next;         /*!< next element of
                                                              the list */
 
 };
+/*****************************************************************************
+ * dvbpsi_ClaimPSISection
+ *****************************************************************************/
+/*!
+ * \fn dvbpsi_psi_section_t * dvbpsi_ClaimPSISection(int i_max_size)
+ * \brief Return a previously released section if one is available or create a new one.
+ * \param h_dvbpsi Handle to retrieve the currently unused section from.
+ * \param i_max_size max size in bytes of the section
+ * \return a pointer to the new PSI section structure.
+ */
+dvbpsi_psi_section_t * dvbpsi_ClaimPSISection(dvbpsi_handle h_dvbpsi, int i_max_size);
 
+/*****************************************************************************
+ * dvbpsi_ReleasePSISections
+ *****************************************************************************/
+ /*!
+ * \fn void dvbpsi_ReleasePSISections(dvbpsi_psi_section_t * p_section)
+ * \brief Release a section so it can be reused.
+ * \param h_dvbpsi Handle to store the unused sections in.
+ * \param p_section pointer to the first PSI section structure
+ * \return nothing.
+ */
+void dvbpsi_ReleasePSISections(dvbpsi_handle h_dvbpsi, dvbpsi_psi_section_t * p_section);
 
 /*****************************************************************************
  * dvbpsi_NewPSISection
Only in libdvbpsi4-0.1.5-mod/src: psi.lo
Only in libdvbpsi4-0.1.5-mod/src: psi.o
Only in libdvbpsi4-0.1.5-mod/src: sdt.lo
Only in libdvbpsi4-0.1.5-mod/src: sdt.o
diff -u -r libdvbpsi4-0.1.5/src/tables/eit.c libdvbpsi4-0.1.5-mod/src/tables/eit.c
--- libdvbpsi4-0.1.5/src/tables/eit.c	2005-05-17 18:35:24.000000000 +0100
+++ libdvbpsi4-0.1.5-mod/src/tables/eit.c	2007-02-27 13:13:30.924414800 +0000
@@ -378,7 +378,7 @@
     {
       if(p_eit_decoder->ap_sections[i] != NULL)
       {
-        dvbpsi_DeletePSISections(p_eit_decoder->ap_sections[i]);
+        dvbpsi_ReleasePSISections(p_psi_decoder, p_eit_decoder->ap_sections[i]);
         p_eit_decoder->ap_sections[i] = NULL;
       }
     }
@@ -412,7 +412,7 @@
     {
       DVBPSI_DEBUG_ARG("EIT decoder", "overwrite section number %d",
                        p_section->i_number);
-      dvbpsi_DeletePSISections(p_eit_decoder->ap_sections[p_section->i_number]);
+      dvbpsi_ReleasePSISections(p_psi_decoder, p_eit_decoder->ap_sections[p_section->i_number]);
     }
     p_eit_decoder->ap_sections[p_section->i_number] = p_section;
 
@@ -443,7 +443,7 @@
       dvbpsi_DecodeEITSections(p_eit_decoder->p_building_eit,
                                p_eit_decoder->ap_sections[0]);
       /* Delete the sections */
-      dvbpsi_DeletePSISections(p_eit_decoder->ap_sections[0]);
+      dvbpsi_ReleasePSISections(p_psi_decoder, p_eit_decoder->ap_sections[0]);
       /* signal the new EIT */
       p_eit_decoder->pf_callback(p_eit_decoder->p_cb_data,
                                  p_eit_decoder->p_building_eit);
@@ -455,7 +455,7 @@
   }
   else
   {
-    dvbpsi_DeletePSISections(p_section);
+    dvbpsi_ReleasePSISections(p_psi_decoder, p_section);
   }
 }
 
diff -u -r libdvbpsi4-0.1.5/src/tables/pat.c libdvbpsi4-0.1.5-mod/src/tables/pat.c
--- libdvbpsi4-0.1.5/src/tables/pat.c	2005-05-17 18:35:24.000000000 +0100
+++ libdvbpsi4-0.1.5-mod/src/tables/pat.c	2007-02-27 13:11:23.452542000 +0000
@@ -74,6 +74,7 @@
   h_dvbpsi->i_continuity_counter = 31;
   h_dvbpsi->b_discontinuity = 1;
   h_dvbpsi->p_current_section = NULL;
+  h_dvbpsi->p_free_sections = NULL;
 
   /* PAT decoder information */
   p_pat_decoder->pf_callback = pf_callback;
@@ -110,6 +111,8 @@
   free(h_dvbpsi->p_private_decoder);
   if(h_dvbpsi->p_current_section)
     dvbpsi_DeletePSISections(h_dvbpsi->p_current_section);
+  if(h_dvbpsi->p_free_sections)
+    dvbpsi_DeletePSISections(h_dvbpsi->p_free_sections);
   free(h_dvbpsi);
 }
 
@@ -301,7 +304,7 @@
     {
       if(p_pat_decoder->ap_sections[i] != NULL)
       {
-        dvbpsi_DeletePSISections(p_pat_decoder->ap_sections[i]);
+        dvbpsi_ReleasePSISections(p_decoder, p_pat_decoder->ap_sections[i]);
         p_pat_decoder->ap_sections[i] = NULL;
       }
     }
@@ -329,7 +332,7 @@
     {
       DVBPSI_DEBUG_ARG("PAT decoder", "overwrite section number %d",
                        p_section->i_number);
-      dvbpsi_DeletePSISections(p_pat_decoder->ap_sections[p_section->i_number]);
+      dvbpsi_ReleasePSISections(p_decoder, p_pat_decoder->ap_sections[p_section->i_number]);
     }
     p_pat_decoder->ap_sections[p_section->i_number] = p_section;
 
@@ -360,7 +363,7 @@
       dvbpsi_DecodePATSections(p_pat_decoder->p_building_pat,
                                p_pat_decoder->ap_sections[0]);
       /* Delete the sections */
-      dvbpsi_DeletePSISections(p_pat_decoder->ap_sections[0]);
+      dvbpsi_ReleasePSISections(p_decoder, p_pat_decoder->ap_sections[0]);
       /* signal the new PAT */
       p_pat_decoder->pf_callback(p_pat_decoder->p_cb_data,
                                  p_pat_decoder->p_building_pat);
@@ -372,7 +375,7 @@
   }
   else
   {
-    dvbpsi_DeletePSISections(p_section);
+    dvbpsi_ReleasePSISections(p_decoder, p_section);
   }
 }
 
diff -u -r libdvbpsi4-0.1.5/src/tables/pmt.c libdvbpsi4-0.1.5-mod/src/tables/pmt.c
--- libdvbpsi4-0.1.5/src/tables/pmt.c	2005-05-17 18:35:24.000000000 +0100
+++ libdvbpsi4-0.1.5-mod/src/tables/pmt.c	2007-02-27 13:11:31.026949200 +0000
@@ -77,6 +77,7 @@
   h_dvbpsi->i_continuity_counter = 31;
   h_dvbpsi->b_discontinuity = 1;
   h_dvbpsi->p_current_section = NULL;
+  h_dvbpsi->p_free_sections = NULL;  
 
   /* PMT decoder configuration */
   p_pmt_decoder->i_program_number = i_program_number;
@@ -114,6 +115,8 @@
   free(h_dvbpsi->p_private_decoder);
   if(h_dvbpsi->p_current_section)
     dvbpsi_DeletePSISections(h_dvbpsi->p_current_section);
+  if(h_dvbpsi->p_free_sections)
+    dvbpsi_DeletePSISections(h_dvbpsi->p_free_sections);
   free(h_dvbpsi);
 }
 
@@ -374,7 +377,7 @@
     {
       if(p_pmt_decoder->ap_sections[i] != NULL)
       {
-        dvbpsi_DeletePSISections(p_pmt_decoder->ap_sections[i]);
+        dvbpsi_ReleasePSISections(p_decoder, p_pmt_decoder->ap_sections[i]);
         p_pmt_decoder->ap_sections[i] = NULL;
       }
     }
@@ -404,7 +407,7 @@
     {
       DVBPSI_DEBUG_ARG("PMT decoder", "overwrite section number %d",
                        p_section->i_number);
-      dvbpsi_DeletePSISections(p_pmt_decoder->ap_sections[p_section->i_number]);
+      dvbpsi_ReleasePSISections(p_decoder, p_pmt_decoder->ap_sections[p_section->i_number]);
     }
     p_pmt_decoder->ap_sections[p_section->i_number] = p_section;
 
@@ -435,7 +438,7 @@
       dvbpsi_DecodePMTSections(p_pmt_decoder->p_building_pmt,
                                p_pmt_decoder->ap_sections[0]);
       /* Delete the sections */
-      dvbpsi_DeletePSISections(p_pmt_decoder->ap_sections[0]);
+      dvbpsi_ReleasePSISections(p_decoder, p_pmt_decoder->ap_sections[0]);
       /* signal the new PMT */
       p_pmt_decoder->pf_callback(p_pmt_decoder->p_cb_data,
                                  p_pmt_decoder->p_building_pmt);
@@ -447,7 +450,7 @@
   }
   else
   {
-    dvbpsi_DeletePSISections(p_section);
+    dvbpsi_ReleasePSISections(p_decoder, p_section);
   }
 }
 
diff -u -r libdvbpsi4-0.1.5/src/tables/sdt.c libdvbpsi4-0.1.5-mod/src/tables/sdt.c
--- libdvbpsi4-0.1.5/src/tables/sdt.c	2005-07-04 16:14:57.000000000 +0100
+++ libdvbpsi4-0.1.5-mod/src/tables/sdt.c	2007-02-27 13:13:39.839263600 +0000
@@ -375,7 +375,7 @@
     {
       if(p_sdt_decoder->ap_sections[i] != NULL)
       {
-        dvbpsi_DeletePSISections(p_sdt_decoder->ap_sections[i]);
+        dvbpsi_ReleasePSISections(p_psi_decoder, p_sdt_decoder->ap_sections[i]);
         p_sdt_decoder->ap_sections[i] = NULL;
       }
     }
@@ -405,7 +405,7 @@
     {
       DVBPSI_DEBUG_ARG("SDT decoder", "overwrite section number %d",
                        p_section->i_number);
-      dvbpsi_DeletePSISections(p_sdt_decoder->ap_sections[p_section->i_number]);
+      dvbpsi_ReleasePSISections(p_psi_decoder, p_sdt_decoder->ap_sections[p_section->i_number]);
     }
     p_sdt_decoder->ap_sections[p_section->i_number] = p_section;
 
@@ -436,7 +436,7 @@
       dvbpsi_DecodeSDTSections(p_sdt_decoder->p_building_sdt,
                                p_sdt_decoder->ap_sections[0]);
       /* Delete the sections */
-      dvbpsi_DeletePSISections(p_sdt_decoder->ap_sections[0]);
+      dvbpsi_ReleasePSISections(p_psi_decoder,p_sdt_decoder->ap_sections[0]);
       /* signal the new SDT */
       p_sdt_decoder->pf_callback(p_sdt_decoder->p_cb_data,
                                  p_sdt_decoder->p_building_sdt);
@@ -448,7 +448,7 @@
   }
   else
   {
-    dvbpsi_DeletePSISections(p_section);
+    dvbpsi_ReleasePSISections(p_psi_decoder,p_section);
   }
 }
 
Only in libdvbpsi4-0.1.5-mod: stamp-h1
Only in libdvbpsi4-0.1.5-mod/wince: Makefile
