[libdvdnav-devel] [PATCH 15/33] Deprecate ifoFree_PGCIT()

beandog at gentoo.org beandog at gentoo.org
Thu Jan 15 21:45:27 CET 2015


From: Steve Dibb <steve.dibb at gmail.com>

---
 src/dvdread/ifo_read.h |  2 +-
 src/ifo_read.c         | 26 +++++++++++++++++++-------
 2 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/src/dvdread/ifo_read.h b/src/dvdread/ifo_read.h
index c19a4d5..c5ba6e0 100644
--- a/src/dvdread/ifo_read.h
+++ b/src/dvdread/ifo_read.h
@@ -210,7 +210,6 @@ int ifoRead_TXTDT_MGI(ifo_handle_t *);
  * file which was not read in or which does not exist.
  */
 void ifoFree_VTS_PTT_SRPT(ifo_handle_t *);
-void ifoFree_PGCIT(ifo_handle_t *);
 void ifoFree_VTS_TMAPT(ifo_handle_t *);
 
 /**
@@ -220,6 +219,7 @@ void ifoFree_VTS_TMAPT(ifo_handle_t *);
  */
 void ifoFree_C_ADT(ifo_handle_t *);
 void ifoFree_FP_PGC(ifo_handle_t *);
+void ifoFree_PGCIT(ifo_handle_t *);
 void ifoFree_PGCI_UT(ifo_handle_t *);
 void ifoFree_PTL_MAIT(ifo_handle_t *);
 void ifoFree_TITLE_C_ADT(ifo_handle_t *);
diff --git a/src/ifo_read.c b/src/ifo_read.c
index ac20a24..ac25fa2 100644
--- a/src/ifo_read.c
+++ b/src/ifo_read.c
@@ -566,7 +566,24 @@ void ifoClose(ifo_handle_t *ifofile) {
     free(ifofile->first_play_pgc->cell_position);
   }
 
-  ifoFree_PGCIT(ifofile);
+  if(ifofile->vts_pgcit) {
+      for(i = 0; i < ifofile->vts_pgcit->nr_of_pgci_srp; i++) {
+
+        if(ifofile->vts_pgcit->pgci_srp[i].pgc->command_tbl) {
+          free(ifofile->vts_pgcit->pgci_srp[i].pgc->command_tbl->pre_cmds);
+          free(ifofile->vts_pgcit->pgci_srp[i].pgc->command_tbl->post_cmds);
+          free(ifofile->vts_pgcit->pgci_srp[i].pgc->command_tbl->cell_cmds);
+          free(ifofile->vts_pgcit->pgci_srp[i].pgc->command_tbl);
+        }
+        free(ifofile->vts_pgcit->pgci_srp[i].pgc->program_map);
+        free(ifofile->vts_pgcit->pgci_srp[i].pgc->cell_playback);
+        free(ifofile->vts_pgcit->pgci_srp[i].pgc->cell_position);
+        free(ifofile->vts_pgcit->pgci_srp[i].pgc);
+      }
+      free(ifofile->vts_pgcit->pgci_srp);
+      free(ifofile->vts_pgcit);
+  }
+
   ifoFree_VTS_PTT_SRPT(ifofile);
   ifoFree_VTS_TMAPT(ifofile);
 
@@ -1993,12 +2010,7 @@ static void ifoFree_PGCIT_internal(pgcit_t **pgcit) {
 }
 
 void ifoFree_PGCIT(ifo_handle_t *ifofile) {
-  if(!ifofile)
-    return;
-
-  if(ifofile->vts_pgcit) {
-    ifoFree_PGCIT_internal(&ifofile->vts_pgcit);
-  }
+  return;
 }
 
 static int find_dup_lut(pgci_lu_t *lu, uint32_t start_byte, int count) {
-- 
2.0.4



More information about the libdvdnav-devel mailing list