[libdvdnav-devel] [PATCH] Set all freed pointers to NULL; for ifofiles, set pointers to NULL instead of zero
Steve Dibb
beandog at gentoo.org
Sat Jan 3 19:00:30 CET 2015
---
src/ifo_read.c | 197
+++++++++++++++++++++++++++++++++++++++++++-------------- 1 file
changed, 148 insertions(+), 49 deletions(-)
diff --git a/src/ifo_read.c b/src/ifo_read.c
index 807ebac..bc26c4d 100644
--- a/src/ifo_read.c
+++ b/src/ifo_read.c
@@ -374,6 +374,7 @@ ifoOpen_try_bup:
if (!ifofile->file) {
fprintf(stderr, "libdvdread: Can't open file %s.\n", ifo_filename);
free(ifofile);
+ ifofile = NULL;
return NULL;
}
bup_file_opened = 1;
@@ -437,6 +438,7 @@ ifo_handle_t *ifoOpenVMGI(dvd_reader_t *dvd) {
if(!ifofile->file) {
fprintf(stderr, "libdvdread: Can't open file VIDEO_TS.IFO.\n");
free(ifofile);
+ ifofile = NULL;
return NULL;
}
@@ -461,6 +463,7 @@ ifo_handle_t *ifoOpenVTSI(dvd_reader_t *dvd, int
title) { if(title <= 0 || title > 99) {
fprintf(stderr, "libdvdread: ifoOpenVTSI invalid title (%d).\n",
title); free(ifofile);
+ ifofile = NULL;
return NULL;
}
@@ -470,6 +473,7 @@ ifo_handle_t *ifoOpenVTSI(dvd_reader_t *dvd, int
title) { if(!ifofile->file) {
fprintf(stderr, "libdvdread: Can't open file VTS_%02d_0.IFO.\n",
title); free(ifofile);
+ ifofile = NULL;
return NULL;
}
@@ -501,16 +505,20 @@ void ifoClose(ifo_handle_t *ifofile) {
ifoFree_VTS_PTT_SRPT(ifofile);
ifoFree_VTS_TMAPT(ifofile);
- if(ifofile->vmgi_mat)
+ if(ifofile->vmgi_mat) {
free(ifofile->vmgi_mat);
+ ifofile->vmgi_mat = NULL;
+ }
- if(ifofile->vtsi_mat)
+ if(ifofile->vtsi_mat) {
free(ifofile->vtsi_mat);
+ ifofile->vtsi_mat = NULL;
+ }
DVDCloseFile(ifofile->file);
ifofile->file = 0;
free(ifofile);
- ifofile = 0;
+ ifofile = NULL;
}
@@ -525,19 +533,19 @@ static int ifoRead_VMG(ifo_handle_t *ifofile) {
if(!DVDFileSeek_(ifofile->file, 0)) {
free(ifofile->vmgi_mat);
- ifofile->vmgi_mat = 0;
+ ifofile->vmgi_mat = NULL;
return 0;
}
if(!DVDReadBytes(ifofile->file, vmgi_mat, sizeof(vmgi_mat_t))) {
free(ifofile->vmgi_mat);
- ifofile->vmgi_mat = 0;
+ ifofile->vmgi_mat = NULL;
return 0;
}
if(strncmp("DVDVIDEO-VMG", vmgi_mat->vmg_identifier, 12) != 0) {
free(ifofile->vmgi_mat);
- ifofile->vmgi_mat = 0;
+ ifofile->vmgi_mat = NULL;
return 0;
}
@@ -748,6 +756,7 @@ static int ifoRead_PGC_COMMAND_TBL(ifo_handle_t
*ifofile,
if(!(DVDReadBytes(ifofile->file, cmd_tbl->pre_cmds,
pre_cmds_size))) { free(cmd_tbl->pre_cmds);
+ cmd_tbl->pre_cmds = NULL;
return 0;
}
}
@@ -756,14 +765,19 @@ static int ifoRead_PGC_COMMAND_TBL(ifo_handle_t
*ifofile, unsigned int post_cmds_size = cmd_tbl->nr_of_post *
COMMAND_DATA_SIZE; cmd_tbl->post_cmds = malloc(post_cmds_size);
if(!cmd_tbl->post_cmds) {
- if(cmd_tbl->pre_cmds)
+ if(cmd_tbl->pre_cmds) {
free(cmd_tbl->pre_cmds);
+ cmd_tbl->pre_cmds = NULL;
+ }
return 0;
}
if(!(DVDReadBytes(ifofile->file, cmd_tbl->post_cmds,
post_cmds_size))) {
- if(cmd_tbl->pre_cmds)
+ if(cmd_tbl->pre_cmds) {
free(cmd_tbl->pre_cmds);
+ cmd_tbl->pre_cmds = NULL;
+ }
free(cmd_tbl->post_cmds);
+ cmd_tbl->post_cmds = NULL;
return 0;
}
}
@@ -772,18 +786,27 @@ static int ifoRead_PGC_COMMAND_TBL(ifo_handle_t
*ifofile, unsigned int cell_cmds_size = cmd_tbl->nr_of_cell *
COMMAND_DATA_SIZE; cmd_tbl->cell_cmds = malloc(cell_cmds_size);
if(!cmd_tbl->cell_cmds) {
- if(cmd_tbl->pre_cmds)
+ if(cmd_tbl->pre_cmds) {
free(cmd_tbl->pre_cmds);
- if(cmd_tbl->post_cmds)
+ cmd_tbl->pre_cmds = NULL;
+ }
+ if(cmd_tbl->post_cmds) {
free(cmd_tbl->post_cmds);
+ cmd_tbl->post_cmds = NULL;
+ }
return 0;
}
if(!(DVDReadBytes(ifofile->file, cmd_tbl->cell_cmds,
cell_cmds_size))) {
- if(cmd_tbl->pre_cmds)
+ if(cmd_tbl->pre_cmds) {
free(cmd_tbl->pre_cmds);
- if(cmd_tbl->post_cmds)
+ cmd_tbl->pre_cmds = NULL;
+ }
+ if(cmd_tbl->post_cmds) {
free(cmd_tbl->post_cmds);
+ cmd_tbl->post_cmds = NULL;
+ }
free(cmd_tbl->cell_cmds);
+ cmd_tbl->cell_cmds = NULL;
return 0;
}
}
@@ -797,13 +820,14 @@ static int ifoRead_PGC_COMMAND_TBL(ifo_handle_t
*ifofile,
static void ifoFree_PGC_COMMAND_TBL(pgc_command_tbl_t *cmd_tbl) {
if(cmd_tbl) {
- if(cmd_tbl->nr_of_pre && cmd_tbl->pre_cmds)
- free(cmd_tbl->pre_cmds);
- if(cmd_tbl->nr_of_post && cmd_tbl->post_cmds)
- free(cmd_tbl->post_cmds);
- if(cmd_tbl->nr_of_cell && cmd_tbl->cell_cmds)
- free(cmd_tbl->cell_cmds);
+ free(cmd_tbl->pre_cmds);
+ cmd_tbl->pre_cmds = NULL;
+ free(cmd_tbl->post_cmds);
+ cmd_tbl->post_cmds = NULL;
+ free(cmd_tbl->cell_cmds);
+ cmd_tbl->cell_cmds = NULL;
free(cmd_tbl);
+ cmd_tbl = NULL;
}
}
@@ -922,6 +946,8 @@ static int ifoRead_PGC(ifo_handle_t *ifofile, pgc_t
*pgc, unsigned int offset) {
if(!ifoRead_PGC_COMMAND_TBL(ifofile, pgc->command_tbl,
offset + pgc->command_tbl_offset)) {
+ free(pgc->command_tbl);
+ pgc->command_tbl = NULL;
return 0;
}
} else {
@@ -935,6 +961,8 @@ static int ifoRead_PGC(ifo_handle_t *ifofile, pgc_t
*pgc, unsigned int offset) { }
if(!ifoRead_PGC_PROGRAM_MAP(ifofile,
pgc->program_map,pgc->nr_of_programs, offset +
pgc->program_map_offset)) {
+ free(pgc->program_map);
+ pgc->program_map = NULL;
return 0;
}
} else {
@@ -949,6 +977,8 @@ static int ifoRead_PGC(ifo_handle_t *ifofile, pgc_t
*pgc, unsigned int offset) { if(!ifoRead_CELL_PLAYBACK_TBL(ifofile,
pgc->cell_playback, pgc->nr_of_cells,
offset + pgc->cell_playback_offset))
{
+ free(pgc->cell_playback);
+ pgc->cell_playback = NULL;
return 0;
}
} else {
@@ -963,6 +993,8 @@ static int ifoRead_PGC(ifo_handle_t *ifofile, pgc_t
*pgc, unsigned int offset) { if(!ifoRead_CELL_POSITION_TBL(ifofile,
pgc->cell_position, pgc->nr_of_cells,
offset + pgc->cell_position_offset))
{
+ free(pgc->cell_position);
+ pgc->cell_position = NULL;
return 0;
}
} else {
@@ -1051,6 +1083,8 @@ int ifoRead_TT_SRPT(ifo_handle_t *ifofile) {
if(!(DVDReadBytes(ifofile->file, tt_srpt, TT_SRPT_SIZE))) {
fprintf(stderr, "libdvdread: Unable to read read TT_SRPT.\n");
free(tt_srpt);
+ tt_srpt = NULL;
+ ifofile->tt_srpt = NULL;
return 0;
}
@@ -1062,7 +1096,8 @@ int ifoRead_TT_SRPT(ifo_handle_t *ifofile) {
tt_srpt->title = malloc(info_length);
if(!tt_srpt->title) {
free(tt_srpt);
- ifofile->tt_srpt = 0;
+ tt_srpt = NULL;
+ ifofile->tt_srpt = NULL;
return 0;
}
if(!(DVDReadBytes(ifofile->file, tt_srpt->title, info_length))) {
@@ -1231,8 +1266,10 @@ int ifoRead_VTS_PTT_SRPT(ifo_handle_t *ifofile) {
vts_ptt_srpt->title[i].nr_of_ptts = n / 4;
vts_ptt_srpt->title[i].ptt = malloc(n * sizeof(ptt_info_t));
if(!vts_ptt_srpt->title[i].ptt) {
- for(n = 0; n < i; n++)
+ for(n = 0; n < i; n++) {
free(vts_ptt_srpt->title[n].ptt);
+ vts_ptt_srpt->title[n].ptt = NULL;
+ }
goto fail;
}
@@ -1276,9 +1313,12 @@ int ifoRead_VTS_PTT_SRPT(ifo_handle_t *ifofile) {
fail:
free(data);
- ifofile->vts_ptt_srpt = 0;
+ data = NULL;
+ ifofile->vts_ptt_srpt = NULL;
free(vts_ptt_srpt->title);
+ vts_ptt_srpt->title = NULL;
free(vts_ptt_srpt);
+ vts_ptt_srpt = NULL;
return 0;
}
@@ -1289,12 +1329,16 @@ void ifoFree_VTS_PTT_SRPT(ifo_handle_t
*ifofile) {
if(ifofile->vts_ptt_srpt) {
int i;
- for(i = 0; i < ifofile->vts_ptt_srpt->nr_of_srpts; i++)
+ for(i = 0; i < ifofile->vts_ptt_srpt->nr_of_srpts; i++) {
free(ifofile->vts_ptt_srpt->title[i].ptt);
+ ifofile->vts_ptt_srpt->title[i].ptt = NULL;
+ }
free(ifofile->vts_ptt_srpt->ttu_offset);
+ ifofile->vts_ptt_srpt->ttu_offset = NULL;
free(ifofile->vts_ptt_srpt->title);
+ ifofile->vts_ptt_srpt->title = NULL;
free(ifofile->vts_ptt_srpt);
- ifofile->vts_ptt_srpt = 0;
+ ifofile->vts_ptt_srpt = NULL;
}
}
@@ -1324,6 +1368,7 @@ int ifoRead_PTL_MAIT(ifo_handle_t *ifofile) {
if(!(DVDReadBytes(ifofile->file, ptl_mait, PTL_MAIT_SIZE))) {
free(ptl_mait);
+ ptl_mait = NULL;
ifofile->ptl_mait = NULL;
return 0;
}
@@ -1343,6 +1388,7 @@ int ifoRead_PTL_MAIT(ifo_handle_t *ifofile) {
ptl_mait->countries = malloc(info_length);
if(!ptl_mait->countries) {
free(ptl_mait);
+ ptl_mait = NULL;
ifofile->ptl_mait = NULL;
return 0;
}
@@ -1354,7 +1400,9 @@ int ifoRead_PTL_MAIT(ifo_handle_t *ifofile) {
if(!(DVDReadBytes(ifofile->file, &ptl_mait->countries[i],
PTL_MAIT_COUNTRY_SIZE))) { fprintf(stderr, "libdvdread: Unable to read
PTL_MAIT.\n"); free(ptl_mait->countries);
+ ptl_mait->countries = NULL;
free(ptl_mait);
+ ptl_mait = NULL;
ifofile->ptl_mait = NULL;
return 0;
}
@@ -1380,7 +1428,9 @@ int ifoRead_PTL_MAIT(ifo_handle_t *ifofile) {
+ ptl_mait->countries[i].pf_ptl_mai_start_byte)) {
fprintf(stderr, "libdvdread: Unable to seek PTL_MAIT table at
index %d.\n",i); free(ptl_mait->countries);
+ ptl_mait->countries = NULL;
free(ptl_mait);
+ ptl_mait = NULL;
ifofile->ptl_mait = NULL;
return 0;
}
@@ -1395,6 +1445,7 @@ int ifoRead_PTL_MAIT(ifo_handle_t *ifofile) {
if(!(DVDReadBytes(ifofile->file, pf_temp, info_length))) {
fprintf(stderr, "libdvdread: Unable to read PTL_MAIT table at
index %d.\n",i); free(pf_temp);
+ pf_temp = NULL;
free_ptl_mait(ptl_mait, i);
ifofile->ptl_mait = NULL;
return 0;
@@ -1405,6 +1456,7 @@ int ifoRead_PTL_MAIT(ifo_handle_t *ifofile) {
ptl_mait->countries[i].pf_ptl_mai = malloc(info_length);
if(!ptl_mait->countries[i].pf_ptl_mai) {
free(pf_temp);
+ pf_temp = NULL;
free_ptl_mait(ptl_mait, i);
ifofile->ptl_mait = NULL;
return 0;
@@ -1418,6 +1470,7 @@ int ifoRead_PTL_MAIT(ifo_handle_t *ifofile) {
}
}
free(pf_temp);
+ pf_temp = NULL;
}
}
return 1;
@@ -1432,8 +1485,10 @@ void ifoFree_PTL_MAIT(ifo_handle_t *ifofile) {
for(i = 0; i < ifofile->ptl_mait->nr_of_countries; i++) {
free(ifofile->ptl_mait->countries[i].pf_ptl_mai);
+ ifofile->ptl_mait->countries[i].pf_ptl_mai = NULL;
}
free(ifofile->ptl_mait->countries);
+ ifofile->ptl_mait->countries = NULL;
free(ifofile->ptl_mait);
ifofile->ptl_mait = NULL;
}
@@ -1471,6 +1526,7 @@ int ifoRead_VTS_TMAPT(ifo_handle_t *ifofile) {
if(!(DVDReadBytes(ifofile->file, vts_tmapt, VTS_TMAPT_SIZE))) {
fprintf(stderr, "libdvdread: Unable to read VTS_TMAPT.\n");
free(vts_tmapt);
+ vts_tmapt = NULL;
ifofile->vts_tmapt = NULL;
return 0;
}
@@ -1485,6 +1541,7 @@ int ifoRead_VTS_TMAPT(ifo_handle_t *ifofile) {
vts_tmap_srp = malloc(info_length);
if(!vts_tmap_srp) {
free(vts_tmapt);
+ vts_tmapt = NULL;
ifofile->vts_tmapt = NULL;
return 0;
}
@@ -1494,7 +1551,9 @@ int ifoRead_VTS_TMAPT(ifo_handle_t *ifofile) {
if(!(DVDReadBytes(ifofile->file, vts_tmap_srp, info_length))) {
fprintf(stderr, "libdvdread: Unable to read VTS_TMAPT.\n");
free(vts_tmap_srp);
+ vts_tmap_srp = NULL;
free(vts_tmapt);
+ vts_tmapt = NULL;
ifofile->vts_tmapt = NULL;
return 0;
}
@@ -1509,7 +1568,9 @@ int ifoRead_VTS_TMAPT(ifo_handle_t *ifofile) {
vts_tmapt->tmap = malloc(info_length);
if(!vts_tmapt->tmap) {
free(vts_tmap_srp);
+ vts_tmap_srp = NULL;
free(vts_tmapt);
+ vts_tmapt = NULL;
ifofile->vts_tmapt = NULL;
return 0;
}
@@ -1565,10 +1626,14 @@ void ifoFree_VTS_TMAPT(ifo_handle_t *ifofile) {
unsigned int i;
for(i = 0; i < ifofile->vts_tmapt->nr_of_tmaps; i++)
- if(ifofile->vts_tmapt->tmap[i].map_ent)
+ if(ifofile->vts_tmapt->tmap[i].map_ent) {
free(ifofile->vts_tmapt->tmap[i].map_ent);
+ ifofile->vts_tmapt->tmap[i].map_ent = NULL;
+ }
free(ifofile->vts_tmapt->tmap);
+ ifofile->vts_tmapt->tmap = NULL;
free(ifofile->vts_tmapt->tmap_offset);
+ ifofile->vts_tmapt->tmap_offset = NULL;
free(ifofile->vts_tmapt);
ifofile->vts_tmapt = NULL;
}
@@ -1593,7 +1658,7 @@ int ifoRead_TITLE_C_ADT(ifo_handle_t *ifofile) {
if(!ifoRead_C_ADT_internal(ifofile, ifofile->vts_c_adt,
ifofile->vtsi_mat->vts_c_adt)) {
free(ifofile->vts_c_adt);
- ifofile->vts_c_adt = 0;
+ ifofile->vts_c_adt = NULL;
return 0;
}
@@ -1624,7 +1689,7 @@ int ifoRead_C_ADT(ifo_handle_t *ifofile) {
if(!ifoRead_C_ADT_internal(ifofile, ifofile->menu_c_adt, sector)) {
free(ifofile->menu_c_adt);
- ifofile->menu_c_adt = 0;
+ ifofile->menu_c_adt = NULL;
return 0;
}
@@ -1670,6 +1735,7 @@ static int ifoRead_C_ADT_internal(ifo_handle_t
*ifofile, if(info_length &&
!(DVDReadBytes(ifofile->file, c_adt->cell_adr_table,
info_length))) { free(c_adt->cell_adr_table);
+ c_adt->cell_adr_table = NULL;
return 0;
}
@@ -1693,7 +1759,9 @@ static int ifoRead_C_ADT_internal(ifo_handle_t
*ifofile, static void ifoFree_C_ADT_internal(c_adt_t *c_adt) {
if(c_adt) {
free(c_adt->cell_adr_table);
+ c_adt->cell_adr_table = NULL;
free(c_adt);
+ c_adt = NULL;
}
}
@@ -1702,7 +1770,7 @@ void ifoFree_C_ADT(ifo_handle_t *ifofile) {
return;
ifoFree_C_ADT_internal(ifofile->menu_c_adt);
- ifofile->menu_c_adt = 0;
+ ifofile->menu_c_adt = NULL;
}
void ifoFree_TITLE_C_ADT(ifo_handle_t *ifofile) {
@@ -1710,7 +1778,7 @@ void ifoFree_TITLE_C_ADT(ifo_handle_t *ifofile) {
return;
ifoFree_C_ADT_internal(ifofile->vts_c_adt);
- ifofile->vts_c_adt = 0;
+ ifofile->vts_c_adt = NULL;
}
int ifoRead_TITLE_VOBU_ADMAP(ifo_handle_t *ifofile) {
@@ -1730,7 +1798,7 @@ int ifoRead_TITLE_VOBU_ADMAP(ifo_handle_t
*ifofile) { if(!ifoRead_VOBU_ADMAP_internal(ifofile,
ifofile->vts_vobu_admap, ifofile->vtsi_mat->vts_vobu_admap)) {
free(ifofile->vts_vobu_admap);
- ifofile->vts_vobu_admap = 0;
+ ifofile->vts_vobu_admap = NULL;
return 0;
}
@@ -1761,7 +1829,7 @@ int ifoRead_VOBU_ADMAP(ifo_handle_t *ifofile) {
if(!ifoRead_VOBU_ADMAP_internal(ifofile, ifofile->menu_vobu_admap,
sector)) { free(ifofile->menu_vobu_admap);
- ifofile->menu_vobu_admap = 0;
+ ifofile->menu_vobu_admap = NULL;
return 0;
}
@@ -1796,6 +1864,7 @@ static int
ifoRead_VOBU_ADMAP_internal(ifo_handle_t
*ifofile, !(DVDReadBytes(ifofile->file, vobu_admap->vobu_start_sectors,
info_length))) { free(vobu_admap->vobu_start_sectors);
+ vobu_admap->vobu_start_sectors = NULL;
return 0;
}
@@ -1809,7 +1878,9 @@ static int
ifoRead_VOBU_ADMAP_internal(ifo_handle_t *ifofile, static void
ifoFree_VOBU_ADMAP_internal(vobu_admap_t *vobu_admap) { if(vobu_admap) {
free(vobu_admap->vobu_start_sectors);
+ vobu_admap->vobu_start_sectors = NULL;
free(vobu_admap);
+ vobu_admap = NULL;
}
}
@@ -1818,7 +1889,7 @@ void ifoFree_VOBU_ADMAP(ifo_handle_t *ifofile) {
return;
ifoFree_VOBU_ADMAP_internal(ifofile->menu_vobu_admap);
- ifofile->menu_vobu_admap = 0;
+ ifofile->menu_vobu_admap = NULL;
}
void ifoFree_TITLE_VOBU_ADMAP(ifo_handle_t *ifofile) {
@@ -1826,7 +1897,7 @@ void ifoFree_TITLE_VOBU_ADMAP(ifo_handle_t
*ifofile) { return;
ifoFree_VOBU_ADMAP_internal(ifofile->vts_vobu_admap);
- ifofile->vts_vobu_admap = 0;
+ ifofile->vts_vobu_admap = NULL;
}
int ifoRead_PGCIT(ifo_handle_t *ifofile) {
@@ -1848,7 +1919,7 @@ int ifoRead_PGCIT(ifo_handle_t *ifofile) {
if(!ifoRead_PGCIT_internal(ifofile, ifofile->vts_pgcit,
ifofile->vtsi_mat->vts_pgcit *
DVD_BLOCK_LEN)) { free(ifofile->vts_pgcit);
- ifofile->vts_pgcit = 0;
+ ifofile->vts_pgcit = NULL;
return 0;
}
@@ -1893,12 +1964,14 @@ static int ifoRead_PGCIT_internal(ifo_handle_t
*ifofile, pgcit_t *pgcit,
if(info_length && !(DVDReadBytes(ifofile->file, data, info_length)))
{ free(data);
+ data = NULL;
return 0;
}
pgcit->pgci_srp = malloc(pgcit->nr_of_pgci_srp * sizeof(pgci_srp_t));
if(!pgcit->pgci_srp) {
free(data);
+ data = NULL;
return 0;
}
ptr = data;
@@ -1909,6 +1982,7 @@ static int ifoRead_PGCIT_internal(ifo_handle_t
*ifofile, pgcit_t *pgcit, CHECK_VALUE(pgcit->pgci_srp[i].unknown1 == 0);
}
free(data);
+ data = NULL;
for(i = 0; i < pgcit->nr_of_pgci_srp; i++)
CHECK_VALUE(pgcit->pgci_srp[i].pgc_start_byte + PGC_SIZE <=
pgcit->last_byte+1); @@ -1936,6 +2010,7 @@ static int
ifoRead_PGCIT_internal(ifo_handle_t *ifofile, pgcit_t *pgcit,
ifoFree_PGC(&pgcit->pgci_srp[j].pgc); }
free(pgcit->pgci_srp[i].pgc);
+ pgcit->pgci_srp[i].pgc = NULL;
goto fail;
}
}
@@ -1955,7 +2030,9 @@ static void ifoFree_PGCIT_internal(pgcit_t
**pgcit) { ifoFree_PGC(&(*pgcit)->pgci_srp[i].pgc);
}
free((*pgcit)->pgci_srp);
+ (*pgcit)->pgci_srp = NULL;
free(*pgcit);
+ *pgcit = NULL;
}
if (pgcit)
*pgcit = NULL;
@@ -2009,13 +2086,13 @@ int ifoRead_PGCI_UT(ifo_handle_t *ifofile) {
if(!DVDFileSeek_(ifofile->file, sector * DVD_BLOCK_LEN)) {
free(ifofile->pgci_ut);
- ifofile->pgci_ut = 0;
+ ifofile->pgci_ut = NULL;
return 0;
}
if(!(DVDReadBytes(ifofile->file, ifofile->pgci_ut, PGCI_UT_SIZE))) {
free(ifofile->pgci_ut);
- ifofile->pgci_ut = 0;
+ ifofile->pgci_ut = NULL;
return 0;
}
@@ -2033,21 +2110,26 @@ int ifoRead_PGCI_UT(ifo_handle_t *ifofile) {
data = malloc(info_length);
if(!data) {
free(pgci_ut);
- ifofile->pgci_ut = 0;
+ pgci_ut = NULL;
+ ifofile->pgci_ut = NULL;
return 0;
}
if(!(DVDReadBytes(ifofile->file, data, info_length))) {
free(data);
+ data = NULL;
free(pgci_ut);
- ifofile->pgci_ut = 0;
+ pgci_ut = NULL;
+ ifofile->pgci_ut = NULL;
return 0;
}
pgci_ut->lu = malloc(pgci_ut->nr_of_lus * sizeof(pgci_lu_t));
if(!pgci_ut->lu) {
free(data);
+ data = NULL;
free(pgci_ut);
- ifofile->pgci_ut = 0;
+ pgci_ut = NULL;
+ ifofile->pgci_ut = NULL;
return 0;
}
ptr = data;
@@ -2058,6 +2140,7 @@ int ifoRead_PGCI_UT(ifo_handle_t *ifofile) {
B2N_32(pgci_ut->lu[i].lang_start_byte);
}
free(data);
+ data = NULL;
for(i = 0; i < pgci_ut->nr_of_lus; i++) {
/* Maybe this is only defined for v1.1 and later titles? */
@@ -2086,8 +2169,10 @@ int ifoRead_PGCI_UT(ifo_handle_t *ifofile) {
ifoFree_PGCIT_internal(&pgci_ut->lu[j].pgcit);
}
free(pgci_ut->lu);
+ pgci_ut->lu = NULL;
free(pgci_ut);
- ifofile->pgci_ut = 0;
+ pgci_ut = NULL;
+ ifofile->pgci_ut = NULL;
return 0;
}
pgci_ut->lu[i].pgcit->ref_count = 1;
@@ -2099,8 +2184,10 @@ int ifoRead_PGCI_UT(ifo_handle_t *ifofile) {
ifoFree_PGCIT_internal(&pgci_ut->lu[j].pgcit);
}
free(pgci_ut->lu);
+ pgci_ut->lu = NULL;
free(pgci_ut);
- ifofile->pgci_ut = 0;
+ pgci_ut = NULL;
+ ifofile->pgci_ut = NULL;
return 0;
}
/* FIXME: Iterate and verify that all menus that should exists
accordingly @@ -2122,8 +2209,9 @@ void ifoFree_PGCI_UT(ifo_handle_t
*ifofile) { ifoFree_PGCIT_internal(&ifofile->pgci_ut->lu[i].pgcit);
}
free(ifofile->pgci_ut->lu);
+ ifofile->pgci_ut->lu = NULL;
free(ifofile->pgci_ut);
- ifofile->pgci_ut = 0;
+ ifofile->pgci_ut = NULL;
}
}
@@ -2206,7 +2294,8 @@ int ifoRead_VTS_ATRT(ifo_handle_t *ifofile) {
if(!(DVDReadBytes(ifofile->file, vts_atrt, VTS_ATRT_SIZE))) {
free(vts_atrt);
- ifofile->vts_atrt = 0;
+ vts_atrt = NULL;
+ ifofile->vts_atrt = NULL;
return 0;
}
@@ -2223,7 +2312,8 @@ int ifoRead_VTS_ATRT(ifo_handle_t *ifofile) {
data = malloc(info_length);
if(!data) {
free(vts_atrt);
- ifofile->vts_atrt = 0;
+ vts_atrt = NULL;
+ ifofile->vts_atrt = NULL;
return 0;
}
@@ -2231,8 +2321,10 @@ int ifoRead_VTS_ATRT(ifo_handle_t *ifofile) {
if(!(DVDReadBytes(ifofile->file, data, info_length))) {
free(data);
+ data = NULL;
free(vts_atrt);
- ifofile->vts_atrt = 0;
+ vts_atrt = NULL;
+ ifofile->vts_atrt = NULL;
return 0;
}
@@ -2245,8 +2337,10 @@ int ifoRead_VTS_ATRT(ifo_handle_t *ifofile) {
vts_atrt->vts = malloc(info_length);
if(!vts_atrt->vts) {
free(data);
+ data = NULL;
free(vts_atrt);
- ifofile->vts_atrt = 0;
+ vts_atrt = NULL;
+ ifofile->vts_atrt = NULL;
return 0;
}
for(i = 0; i < vts_atrt->nr_of_vtss; i++) {
@@ -2254,8 +2348,10 @@ int ifoRead_VTS_ATRT(ifo_handle_t *ifofile) {
if(!ifoRead_VTS_ATTRIBUTES(ifofile, &(vts_atrt->vts[i]),
(sector * DVD_BLOCK_LEN) + offset)) {
free(data);
+ data = NULL;
free(vts_atrt);
- ifofile->vts_atrt = 0;
+ vts_atrt = NULL;
+ ifofile->vts_atrt = NULL;
return 0;
}
@@ -2274,9 +2370,11 @@ void ifoFree_VTS_ATRT(ifo_handle_t *ifofile) {
if(ifofile->vts_atrt) {
free(ifofile->vts_atrt->vts);
+ ifofile->vts_atrt->vts = NULL;
free(ifofile->vts_atrt->vts_atrt_offsets);
+ ifofile->vts_atrt->vts_atrt_offsets = NULL;
free(ifofile->vts_atrt);
- ifofile->vts_atrt = 0;
+ ifofile->vts_atrt = NULL;
}
}
@@ -2307,7 +2405,8 @@ int ifoRead_TXTDT_MGI(ifo_handle_t *ifofile) {
if(!(DVDReadBytes(ifofile->file, txtdt_mgi, TXTDT_MGI_SIZE))) {
fprintf(stderr, "libdvdread: Unable to read TXTDT_MGI.\n");
free(txtdt_mgi);
- ifofile->txtdt_mgi = 0;
+ txtdt_mgi = NULL;
+ ifofile->txtdt_mgi = NULL;
return 0;
}
@@ -2321,6 +2420,6 @@ void ifoFree_TXTDT_MGI(ifo_handle_t *ifofile) {
if(ifofile->txtdt_mgi) {
free(ifofile->txtdt_mgi);
- ifofile->txtdt_mgi = 0;
+ ifofile->txtdt_mgi = NULL;
}
}
--
2.0.4
More information about the libdvdnav-devel
mailing list