Bug 498380 - Remove bogus packet_buffer assert from oggz_close. r=chris.double

This commit is contained in:
Matthew Gregan 2009-10-12 13:07:51 +13:00
parent 87b090cb12
commit 563aeb839c
9 changed files with 87 additions and 1 deletions

View File

@ -121,6 +121,7 @@ _TEST_FILES += \
bug495129.ogv \
bug461281.ogg \
bug482461.ogv \
bug498380.ogv \
bug498855-1.ogv \
bug498855-2.ogv \
bug498855-3.ogv \

Binary file not shown.

View File

@ -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" }
];

View File

@ -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.

View 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)

View File

@ -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)

View File

@ -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__ */

View File

@ -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) {

View File

@ -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