Commit 830a9583 authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

buffer: add buffer_move



Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Reviewed-by: default avatarPeter Lieven <pl@kamp.de>
Reviewed-by: default avatarDaniel P. Berrange <berrange@redhat.com>
Message-id: 1446203414-4013-5-git-send-email-kraxel@redhat.com
parent 4d1eb5fd
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -137,4 +137,14 @@ gboolean buffer_empty(Buffer *buffer);
 */
void buffer_move_empty(Buffer *to, Buffer *from);

/**
 * buffer_move:
 * @to: destination buffer object
 * @from: source buffer object
 *
 * Moves buffer, copying data (unless 'to' buffer happens to be empty).
 * 'from' buffer is empty and zero-sized on return.
 */
void buffer_move(Buffer *to, Buffer *from);

#endif /* QEMU_BUFFER_H__ */
+16 −0
Original line number Diff line number Diff line
@@ -91,3 +91,19 @@ void buffer_move_empty(Buffer *to, Buffer *from)
    from->capacity = 0;
    from->buffer = NULL;
}

void buffer_move(Buffer *to, Buffer *from)
{
    if (to->offset == 0) {
        buffer_move_empty(to, from);
        return;
    }

    buffer_reserve(to, from->offset);
    buffer_append(to, from->buffer, from->offset);

    g_free(from->buffer);
    from->offset = 0;
    from->capacity = 0;
    from->buffer = NULL;
}