mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 498380 - Remove bogus packet_buffer assert from oggz_close. r=chris.double
This commit is contained in:
parent
87b090cb12
commit
563aeb839c
@ -121,6 +121,7 @@ _TEST_FILES += \
|
||||
bug495129.ogv \
|
||||
bug461281.ogg \
|
||||
bug482461.ogv \
|
||||
bug498380.ogv \
|
||||
bug498855-1.ogv \
|
||||
bug498855-2.ogv \
|
||||
bug498855-3.ogv \
|
||||
|
BIN
content/media/test/bug498380.ogv
Normal file
BIN
content/media/test/bug498380.ogv
Normal file
Binary file not shown.
@ -67,6 +67,7 @@ var gErrorTests = [
|
||||
{ name:"448636.ogv", type:"video/ogg" },
|
||||
{ name:"bug495129.ogv", type:"video/ogg", duration:2.52 },
|
||||
{ name:"bug504843.ogv", type:"video/ogg", duration:1.233 },
|
||||
{ name:"bug498380.ogv", type:"video/ogg" },
|
||||
{ name:"bogus.duh", type:"bogus/duh" }
|
||||
];
|
||||
|
||||
|
@ -29,5 +29,7 @@ bug504843.patch: Propogate read errors from oggz_read_sync().
|
||||
|
||||
bug519155.patch: Fix oggz seek's reset so that it can rollback on fail correctly.
|
||||
|
||||
bug498380.patch: Remove bogus assert.
|
||||
|
||||
bug520493.patch: Fix oggz seek so that it doesn't exit too early, and to use
|
||||
more accurate page offsets while bisecting.
|
||||
|
68
media/liboggz/bug498380.patch
Normal file
68
media/liboggz/bug498380.patch
Normal file
@ -0,0 +1,68 @@
|
||||
diff --git a/media/liboggz/src/liboggz/oggz.c b/media/liboggz/src/liboggz/oggz.c
|
||||
--- a/media/liboggz/src/liboggz/oggz.c
|
||||
+++ b/media/liboggz/src/liboggz/oggz.c
|
||||
@@ -210,17 +210,17 @@ oggz_close (OGGZ * oggz)
|
||||
oggz_write_close (oggz);
|
||||
} else if (OGGZ_CONFIG_READ) {
|
||||
oggz_read_close (oggz);
|
||||
}
|
||||
|
||||
oggz_vector_foreach (oggz->streams, oggz_stream_clear);
|
||||
oggz_vector_delete (oggz->streams);
|
||||
|
||||
- assert(oggz_dlist_is_empty(oggz->packet_buffer));
|
||||
+ oggz_dlist_deliter(oggz->packet_buffer, oggz_read_free_pbuffers);
|
||||
oggz_dlist_delete(oggz->packet_buffer);
|
||||
|
||||
if (oggz->metric_internal)
|
||||
oggz_free (oggz->metric_user_data);
|
||||
|
||||
if (oggz->file != NULL) {
|
||||
if (fclose (oggz->file) == EOF) {
|
||||
return OGGZ_ERR_SYSTEM;
|
||||
diff --git a/media/liboggz/src/liboggz/oggz_private.h b/media/liboggz/src/liboggz/oggz_private.h
|
||||
--- a/media/liboggz/src/liboggz/oggz_private.h
|
||||
+++ b/media/liboggz/src/liboggz/oggz_private.h
|
||||
@@ -314,9 +314,12 @@ long oggz_comments_encode (OGGZ * oggz,
|
||||
|
||||
/* oggz_io */
|
||||
size_t oggz_io_read (OGGZ * oggz, void * buf, size_t n);
|
||||
size_t oggz_io_write (OGGZ * oggz, void * buf, size_t n);
|
||||
int oggz_io_seek (OGGZ * oggz, long offset, int whence);
|
||||
long oggz_io_tell (OGGZ * oggz);
|
||||
int oggz_io_flush (OGGZ * oggz);
|
||||
|
||||
+/* oggz_read */
|
||||
+OggzDListIterResponse oggz_read_free_pbuffers(void *elem);
|
||||
+
|
||||
#endif /* __OGGZ_PRIVATE_H__ */
|
||||
diff --git a/media/liboggz/src/liboggz/oggz_read.c b/media/liboggz/src/liboggz/oggz_read.c
|
||||
--- a/media/liboggz/src/liboggz/oggz_read.c
|
||||
+++ b/media/liboggz/src/liboggz/oggz_read.c
|
||||
@@ -248,16 +248,26 @@ void
|
||||
oggz_read_free_pbuffer_entry(OggzBufferedPacket *p) {
|
||||
|
||||
oggz_free(p->packet.packet);
|
||||
oggz_free(p);
|
||||
|
||||
}
|
||||
|
||||
OggzDListIterResponse
|
||||
+oggz_read_free_pbuffers(void *elem)
|
||||
+{
|
||||
+ OggzBufferedPacket *p = (OggzBufferedPacket *)elem;
|
||||
+
|
||||
+ oggz_read_free_pbuffer_entry(p);
|
||||
+
|
||||
+ return DLIST_ITER_CONTINUE;
|
||||
+}
|
||||
+
|
||||
+OggzDListIterResponse
|
||||
oggz_read_update_gp(void *elem) {
|
||||
|
||||
OggzBufferedPacket *p = (OggzBufferedPacket *)elem;
|
||||
|
||||
if (p->calced_granulepos == -1 && p->stream->last_granulepos != -1) {
|
||||
int content = oggz_stream_get_content(p->oggz, p->serialno);
|
||||
|
||||
/* Cancel the iteration (backwards through buffered packets)
|
@ -215,7 +215,7 @@ oggz_close (OGGZ * oggz)
|
||||
oggz_vector_foreach (oggz->streams, oggz_stream_clear);
|
||||
oggz_vector_delete (oggz->streams);
|
||||
|
||||
assert(oggz_dlist_is_empty(oggz->packet_buffer));
|
||||
oggz_dlist_deliter(oggz->packet_buffer, oggz_read_free_pbuffers);
|
||||
oggz_dlist_delete(oggz->packet_buffer);
|
||||
|
||||
if (oggz->metric_internal)
|
||||
|
@ -319,4 +319,7 @@ int oggz_io_seek (OGGZ * oggz, long offset, int whence);
|
||||
long oggz_io_tell (OGGZ * oggz);
|
||||
int oggz_io_flush (OGGZ * oggz);
|
||||
|
||||
/* oggz_read */
|
||||
OggzDListIterResponse oggz_read_free_pbuffers(void *elem);
|
||||
|
||||
#endif /* __OGGZ_PRIVATE_H__ */
|
||||
|
@ -252,6 +252,16 @@ oggz_read_free_pbuffer_entry(OggzBufferedPacket *p) {
|
||||
|
||||
}
|
||||
|
||||
OggzDListIterResponse
|
||||
oggz_read_free_pbuffers(void *elem)
|
||||
{
|
||||
OggzBufferedPacket *p = (OggzBufferedPacket *)elem;
|
||||
|
||||
oggz_read_free_pbuffer_entry(p);
|
||||
|
||||
return DLIST_ITER_CONTINUE;
|
||||
}
|
||||
|
||||
OggzDListIterResponse
|
||||
oggz_read_update_gp(void *elem) {
|
||||
|
||||
|
@ -60,4 +60,5 @@ patch -p3 <bug516847.patch
|
||||
patch -p3 <bug518169.patch
|
||||
patch -p3 <bug504843.patch
|
||||
patch -p3 <bug519155.patch
|
||||
patch -p3 <bug498380.patch
|
||||
patch -p3 <bug520493.patch
|
||||
|
Loading…
Reference in New Issue
Block a user