mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
avformat/aviobuf: Simplify dyn_buf_write() a bit
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
parent
28a078eded
commit
88d5ae068f
@ -1284,22 +1284,19 @@ typedef struct DynBuffer {
|
||||
static int dyn_buf_write(void *opaque, uint8_t *buf, int buf_size)
|
||||
{
|
||||
DynBuffer *d = opaque;
|
||||
unsigned new_size, new_allocated_size;
|
||||
unsigned new_size;
|
||||
|
||||
/* reallocate buffer if needed */
|
||||
new_size = (unsigned)d->pos + buf_size;
|
||||
new_allocated_size = d->allocated_size;
|
||||
if (new_size < d->pos || new_size > INT_MAX/2)
|
||||
return -1;
|
||||
while (new_size > new_allocated_size) {
|
||||
if (!new_allocated_size)
|
||||
new_allocated_size = new_size;
|
||||
else
|
||||
new_allocated_size += new_allocated_size / 2 + 1;
|
||||
}
|
||||
|
||||
if (new_allocated_size > d->allocated_size) {
|
||||
if (new_size > d->allocated_size) {
|
||||
unsigned new_allocated_size = d->allocated_size ? d->allocated_size
|
||||
: new_size;
|
||||
int err;
|
||||
while (new_size > new_allocated_size)
|
||||
new_allocated_size += new_allocated_size / 2 + 1;
|
||||
|
||||
if ((err = av_reallocp(&d->buffer, new_allocated_size)) < 0) {
|
||||
d->allocated_size = 0;
|
||||
d->size = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user