From 387d00529f30df5c25e2f9af4988119f1630ec37 Mon Sep 17 00:00:00 2001 From: Robert O'Callahan Date: Fri, 30 Jan 2009 20:29:20 +1300 Subject: [PATCH] Bug 464007. Don't crash in liboggplay end-of-file path when the load is cancelled near the end of the stream. r=wiking --HG-- extra : rebase_source : 608da2277823a60057241c5f5241f34c6894318b --- media/liboggplay/README_MOZILLA | 3 +++ media/liboggplay/bug464007.patch | 18 ++++++++++++++++++ media/liboggplay/src/liboggplay/oggplay.c | 6 ++++-- media/liboggplay/update.sh | 1 + 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 media/liboggplay/bug464007.patch diff --git a/media/liboggplay/README_MOZILLA b/media/liboggplay/README_MOZILLA index b68c24bc696e..919292ecbb34 100644 --- a/media/liboggplay/README_MOZILLA +++ b/media/liboggplay/README_MOZILLA @@ -12,3 +12,6 @@ The patch from Annodex trac ticket 421 is applied to fix bug 459938: The patch from Bug 468327 (yuv_disable_optimized.patch) is applied to disable optimized yuv to rgb routines. + +The patch from Bug 464007 (bug464007.patch) is applied +to fix oggplay issues. diff --git a/media/liboggplay/bug464007.patch b/media/liboggplay/bug464007.patch new file mode 100644 index 000000000000..8cfe5b1a82fd --- /dev/null +++ b/media/liboggplay/bug464007.patch @@ -0,0 +1,18 @@ +diff --git a/media/liboggplay/src/liboggplay/oggplay.c b/media/liboggplay/src/liboggplay/oggplay.c +index 9a1c8b8..250064d 100644 +--- a/media/liboggplay/src/liboggplay/oggplay.c ++++ b/media/liboggplay/src/liboggplay/oggplay.c +@@ -522,9 +522,11 @@ read_more_data: + } + + /* +- * ensure all tracks have their final data packet set to end_of_stream ++ * ensure all tracks have their final data packet set to end_of_stream. ++ * But skip doing this if we're shutting down --- me->buffer may not ++ * be in a safe state. + */ +- if (me->buffer != NULL) { ++ if (me->buffer != NULL && !me->shutdown) { + oggplay_buffer_set_last_data(me, me->buffer); + } + diff --git a/media/liboggplay/src/liboggplay/oggplay.c b/media/liboggplay/src/liboggplay/oggplay.c index 9a1c8b86d5c9..250064d91dd2 100644 --- a/media/liboggplay/src/liboggplay/oggplay.c +++ b/media/liboggplay/src/liboggplay/oggplay.c @@ -522,9 +522,11 @@ read_more_data: } /* - * ensure all tracks have their final data packet set to end_of_stream + * ensure all tracks have their final data packet set to end_of_stream. + * But skip doing this if we're shutting down --- me->buffer may not + * be in a safe state. */ - if (me->buffer != NULL) { + if (me->buffer != NULL && !me->shutdown) { oggplay_buffer_set_last_data(me, me->buffer); } diff --git a/media/liboggplay/update.sh b/media/liboggplay/update.sh index 88986ffa616c..0a97a384ac92 100644 --- a/media/liboggplay/update.sh +++ b/media/liboggplay/update.sh @@ -38,3 +38,4 @@ cd ./src/liboggplay patch <../../yuv2rgb-vanilla-fix.patch patch <../../yuv_disable_optimized.patch cd ../.. +patch -p3