
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; }
participants (1)
-
ods15