summaryrefslogtreecommitdiff
path: root/src/input/libdvdnav/ifo_read.c
diff options
context:
space:
mode:
authorMichael Roitzsch <mroi@users.sourceforge.net>2004-12-20 19:27:19 +0000
committerMichael Roitzsch <mroi@users.sourceforge.net>2004-12-20 19:27:19 +0000
commit28b6453c0fb182c86655b96fe182a7e826ab7879 (patch)
tree6b07af1ed3d9e25c3846771513348db2d263fbff /src/input/libdvdnav/ifo_read.c
parentb5474f871d5df7eab292f5c7eb87abef30b9319a (diff)
downloadxine-lib-28b6453c0fb182c86655b96fe182a7e826ab7879.tar.gz
xine-lib-28b6453c0fb182c86655b96fe182a7e826ab7879.tar.bz2
updated libdvdnav from CVS to improve handling of error conditions
CVS patchset: 7285 CVS date: 2004/12/20 19:27:19
Diffstat (limited to 'src/input/libdvdnav/ifo_read.c')
-rw-r--r--src/input/libdvdnav/ifo_read.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/input/libdvdnav/ifo_read.c b/src/input/libdvdnav/ifo_read.c
index 4cb6cf929..afc86b196 100644
--- a/src/input/libdvdnav/ifo_read.c
+++ b/src/input/libdvdnav/ifo_read.c
@@ -683,7 +683,7 @@ static int ifoRead_PGC(ifo_handle_t *ifofile, pgc_t *pgc, unsigned int offset) {
pgc->command_tbl = NULL;
}
- if(pgc->program_map_offset != 0) {
+ if(pgc->program_map_offset != 0 && pgc->nr_of_programs>0) {
pgc->program_map = malloc(pgc->nr_of_programs * sizeof(pgc_program_map_t));
if(!pgc->program_map) {
ifoFree_PGC_COMMAND_TBL(pgc->command_tbl);
@@ -699,7 +699,7 @@ static int ifoRead_PGC(ifo_handle_t *ifofile, pgc_t *pgc, unsigned int offset) {
pgc->program_map = NULL;
}
- if(pgc->cell_playback_offset != 0) {
+ if(pgc->cell_playback_offset != 0 && pgc->nr_of_cells>0) {
pgc->cell_playback = malloc(pgc->nr_of_cells * sizeof(cell_playback_t));
if(!pgc->cell_playback) {
ifoFree_PGC_COMMAND_TBL(pgc->command_tbl);
@@ -720,7 +720,7 @@ static int ifoRead_PGC(ifo_handle_t *ifofile, pgc_t *pgc, unsigned int offset) {
pgc->cell_playback = NULL;
}
- if(pgc->cell_position_offset != 0) {
+ if(pgc->cell_position_offset != 0 && pgc->nr_of_cells>0) {
pgc->cell_position = malloc(pgc->nr_of_cells * sizeof(cell_position_t));
if(!pgc->cell_position) {
ifoFree_PGC(pgc);