]> git.sesse.net Git - ffmpeg/commitdiff
avformat/aviobuf: Simplify dyn_buf_write() a bit
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Sun, 24 May 2020 02:02:27 +0000 (04:02 +0200)
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Thu, 11 Jun 2020 00:01:56 +0000 (02:01 +0200)
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
libavformat/aviobuf.c

index 0e6125e161fafc8b15d7e74bed6925137684b258..12408fd211a5a0de792cdb1485b4845376c8bd9d 100644 (file)
@@ -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
+    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 (new_allocated_size > d->allocated_size) {
-        int err;
         if ((err = av_reallocp(&d->buffer, new_allocated_size)) < 0) {
             d->allocated_size = 0;
             d->size = 0;