[NUT-devel] [nut]: r232 - trunk/libnut/demuxer.c

ods15 subversion at mplayerhq.hu
Sat Nov 18 12:04:41 CET 2006


Author: ods15
Date: Sat Nov 18 12:04:40 2006
New Revision: 232

Modified:
   trunk/libnut/demuxer.c

Log:
if a memory error occured in input buffer allocation, make sure it is forwarded up


Modified: trunk/libnut/demuxer.c
==============================================================================
--- trunk/libnut/demuxer.c	(original)
+++ trunk/libnut/demuxer.c	Sat Nov 18 12:04:40 2006
@@ -28,10 +28,11 @@
 	int pos = (bc->buf_ptr - bc->buf);
 	if (bc->read_len - pos < amount && !bc->is_mem) {
 		amount += 10; // ### + PREALLOC_SIZE ?
+		if (!bc->alloc) return 0; // there was a previous memory error
 		if (bc->write_len - pos < amount) {
 			int new_len = amount + pos + PREALLOC_SIZE;
 			uint8_t * buf = bc->alloc->realloc(bc->buf, new_len);
-			if (!buf) return 0;
+			if (!buf) { bc->alloc = NULL; return 0; }
 			bc->write_len = new_len;
 			bc->buf = buf;
 			bc->buf_ptr = bc->buf + pos;
@@ -67,6 +68,7 @@
 
 static int buf_eof(input_buffer_t * bc) {
 	if (bc->is_mem) return NUT_ERR_BAD_EOF;
+	if (!bc->alloc) return NUT_ERR_OUT_OF_MEM;
 	if (!bc->isc.eof || bc->isc.eof(bc->isc.priv)) return NUT_ERR_EOF;
 	return NUT_ERR_EAGAIN;
 }



More information about the NUT-devel mailing list