diff --git a/contrib/src/dvdnav/0001-play-avoid-assert-and-exit-and-bogus-PG-link.patch b/contrib/src/dvdnav/0001-play-avoid-assert-and-exit-and-bogus-PG-link.patch new file mode 100644 index 0000000000000000000000000000000000000000..0bd9c9eca98a92567c4c16ffa0ce6ff57e6938eb --- /dev/null +++ b/contrib/src/dvdnav/0001-play-avoid-assert-and-exit-and-bogus-PG-link.patch @@ -0,0 +1,30 @@ +From ff8676289c227d03293f63152d327b2a16775eea Mon Sep 17 00:00:00 2001 +From: Steve Lhomme <robux4@ycbcr.xyz> +Date: Fri, 24 Jan 2025 13:34:52 +0100 +Subject: [PATCH 1/2] play: avoid assert and exit and bogus PG link + +Just return LinkNoLink. +--- + src/vm/play.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/vm/play.c b/src/vm/play.c +index 8830883..e5d0e72 100644 +--- a/src/vm/play.c ++++ b/src/vm/play.c +@@ -177,7 +177,11 @@ link_t play_PG(vm_t *vm) { + Log3(vm, "play_PG: (vm->state).pgN (%i) > pgc->nr_of_programs (%i)", + (vm->state).pgN, (vm->state).pgc->nr_of_programs ); + #endif +- assert((vm->state).pgN == (vm->state).pgc->nr_of_programs + 1); ++ if((vm->state).pgN > (vm->state).pgc->nr_of_programs + 1) { ++ /* bogus link, ignore it */ ++ link_t link_values = { LinkNoLink, 0, 0, 0 }; ++ return link_values; ++ } + return play_PGC_post(vm); + } + +-- +2.45.0.windows.1 + diff --git a/contrib/src/dvdnav/0002-play-avoid-assert-and-exit-and-bogus-Cell-link.patch b/contrib/src/dvdnav/0002-play-avoid-assert-and-exit-and-bogus-Cell-link.patch new file mode 100644 index 0000000000000000000000000000000000000000..eaa55258bd79663a3158e47a6abe438aa4264be1 --- /dev/null +++ b/contrib/src/dvdnav/0002-play-avoid-assert-and-exit-and-bogus-Cell-link.patch @@ -0,0 +1,30 @@ +From 43d76f9a0136fb244662e59876d87c7256df27c4 Mon Sep 17 00:00:00 2001 +From: Steve Lhomme <robux4@ycbcr.xyz> +Date: Fri, 24 Jan 2025 13:39:11 +0100 +Subject: [PATCH 2/2] play: avoid assert and exit and bogus Cell link + +Just return LinkNoLink. +--- + src/vm/play.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/vm/play.c b/src/vm/play.c +index e5d0e72..a9d99fa 100644 +--- a/src/vm/play.c ++++ b/src/vm/play.c +@@ -203,7 +203,11 @@ link_t play_Cell(vm_t *vm) { + Log3(vm, "(vm->state).cellN (%i) > pgc->nr_of_cells (%i)", + (vm->state).cellN, (vm->state).pgc->nr_of_cells ); + #endif +- assert((vm->state).cellN == (vm->state).pgc->nr_of_cells + 1); ++ if((vm->state).cellN == (vm->state).pgc->nr_of_cells + 1) { ++ /* bogus link, ignore it */ ++ link_t link_values = { LinkNoLink, 0, 0, 0 }; ++ return link_values; ++ } + return play_PGC_post(vm); + } + +-- +2.45.0.windows.1 + diff --git a/contrib/src/dvdnav/rules.mak b/contrib/src/dvdnav/rules.mak index 3aff37cd745e84a37646b3971ca7e355a66a07c5..1613a92eadf458438ef2bccb96ce0ca9e05e8e69 100644 --- a/contrib/src/dvdnav/rules.mak +++ b/contrib/src/dvdnav/rules.mak @@ -23,6 +23,9 @@ dvdnav: libdvdnav-$(LIBDVDNAV_VERSION).tar.bz2 .sum-dvdnav $(UNPACK) $(call update_autoconfig,.) $(APPLY) $(SRC)/dvdnav/0001-configure-don-t-use-ms-style-packing.patch + # turn asserts/exit into silent discard + $(APPLY) $(SRC)/dvdnav/0001-play-avoid-assert-and-exit-and-bogus-PG-link.patch + $(APPLY) $(SRC)/dvdnav/0002-play-avoid-assert-and-exit-and-bogus-Cell-link.patch $(call pkg_static,"misc/dvdnav.pc.in") $(MOVE)