# HG changeset patch # User nicodvb # Date 1199024552 0 # Node ID fc94594033a8147834f4653923f6b56d2f0d368f # Parent e9dd884a30548cb8b34a467709425dbcd66903b3 fix various memleaks, part of ogle-1764 diff -r e9dd884a3054 -r fc94594033a8 dvdread/ifo_read.c --- a/dvdread/ifo_read.c Sun Dec 30 14:08:25 2007 +0000 +++ b/dvdread/ifo_read.c Sun Dec 30 14:22:32 2007 +0000 @@ -257,6 +257,7 @@ ifoFree_FP_PGC(ifofile); ifoFree_PGCIT(ifofile); ifoFree_VTS_PTT_SRPT(ifofile); + ifoFree_VTS_TMAPT(ifofile); if(ifofile->vmgi_mat) free(ifofile->vmgi_mat); @@ -1643,7 +1644,7 @@ ifoFree_PGC(pgcit->pgci_srp[j].pgc); free(pgcit->pgci_srp[j].pgc); } - return 0; + goto fail; } if(!ifoRead_PGC(ifofile, pgcit->pgci_srp[i].pgc, offset + pgcit->pgci_srp[i].pgc_start_byte)) { @@ -1652,12 +1653,15 @@ ifoFree_PGC(pgcit->pgci_srp[j].pgc); free(pgcit->pgci_srp[j].pgc); } - free(pgcit->pgci_srp); - return 0; + goto fail; } } return 1; +fail: + free(pgcit->pgci_srp); + pgcit->pgci_srp = NULL; + return 0; } static void ifoFree_PGCIT_internal(pgcit_t *pgcit) {