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: