Commit 5c10dbb7 authored by Peter Lieven's avatar Peter Lieven Committed by Gerd Hoffmann
Browse files

buffer: make the Buffer capacity increase in powers of two



This makes sure the number of reallocs is in O(log N).

Signed-off-by: default avatarPeter Lieven <pl@kamp.de>
Reviewed-by: default avatarDaniel P. Berrange <berrange@redhat.com>
Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Message-id: 1446203414-4013-2-git-send-email-kraxel@redhat.com

[ rebased to util/buffer.c ]

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
parent 79cf9fad
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -20,10 +20,13 @@

#include "qemu/buffer.h"

#define BUFFER_MIN_INIT_SIZE 4096

void buffer_reserve(Buffer *buffer, size_t len)
{
    if ((buffer->capacity - buffer->offset) < len) {
        buffer->capacity += (len + 1024);
        buffer->capacity = pow2ceil(buffer->offset + len);
        buffer->capacity = MAX(buffer->capacity, BUFFER_MIN_INIT_SIZE);
        buffer->buffer = g_realloc(buffer->buffer, buffer->capacity);
    }
}