Index: src/navigation.c
===================================================================
--- src/navigation.c (revision 1017)
+++ src/navigation.c (revision 1019)
@@ -104,7 +104,10 @@
if ( (this->vm->state.domain == VTSM_DOMAIN)
|| (this->vm->state.domain == VMGM_DOMAIN) ) {
/* Get current Menu ID: into *part. */
- vm_get_current_menu(this->vm, part);
+ if(! vm_get_current_menu(this->vm, part)) {
+ pthread_mutex_unlock(&this->vm_lock);
+ return DVDNAV_STATUS_ERR;
+ }
if (*part > -1) {
*title = 0;
pthread_mutex_unlock(&this->vm_lock);
Index: src/vm/vm.c
===================================================================
--- src/vm/vm.c (revision 1017)
+++ src/vm/vm.c (revision 1019)
@@ -612,6 +612,7 @@
int pgcn;
pgcn = (vm->state).pgcN;
pgcit = get_PGCIT(vm);
+ if(pgcit==NULL) return 0;
*menuid = pgcit->pgci_srp[pgcn - 1].entry_id & 0xf ;
return 1;
}
@@ -1823,13 +1824,15 @@
/* Uses state to decide what to return */
static pgcit_t* get_PGCIT(vm_t *vm) {
- pgcit_t *pgcit;
+ pgcit_t *pgcit = NULL;
switch ((vm->state).domain) {
case VTS_DOMAIN:
+ if(!vm->vtsi) return NULL;
pgcit = vm->vtsi->vts_pgcit;
break;
case VTSM_DOMAIN:
+ if(!vm->vtsi) return NULL;
pgcit = get_MENU_PGCIT(vm, vm->vtsi, (vm->state).registers.SPRM[0]);
break;
case VMGM_DOMAIN: