[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 03/19] buffer: add buffer_move_empty
From: |
Daniel P. Berrange |
Subject: |
Re: [Qemu-devel] [PATCH 03/19] buffer: add buffer_move_empty |
Date: |
Fri, 30 Oct 2015 21:11:01 +0900 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Fri, Oct 30, 2015 at 12:09:58PM +0100, Gerd Hoffmann wrote:
> Signed-off-by: Gerd Hoffmann <address@hidden>
> Reviewed-by: Peter Lieven <address@hidden>
> ---
> include/qemu/buffer.h | 10 ++++++++++
> util/buffer.c | 14 ++++++++++++++
> 2 files changed, 24 insertions(+)
>
> diff --git a/include/qemu/buffer.h b/include/qemu/buffer.h
> index 0710e16..f53ee9e 100644
> --- a/include/qemu/buffer.h
> +++ b/include/qemu/buffer.h
> @@ -127,4 +127,14 @@ uint8_t *buffer_end(Buffer *buffer);
> */
> gboolean buffer_empty(Buffer *buffer);
>
> +/**
> + * buffer_move_empty:
> + * @to: destination buffer object
> + * @from: source buffer object
> + *
> + * Moves buffer, without copying data. 'to' buffer must be empty.
Hmm, on the one hand the code do 'assert(to->offset) == 0', but on
the other hand it does 'g_free(to->buffer)' as if it expected the
buffer to have existing data.
If you just remove the 'assert', then there's no real requirement
for 'to' to be empty, as we'd do the right thin in free'ing the
data. Then we can just change this API doc to say
"Any existing data in "to" will be freed"
> + * 'from' buffer is empty and zero-sized on return.
> + */
> +void buffer_move_empty(Buffer *to, Buffer *from);
> +
> #endif /* QEMU_BUFFER_H__ */
> diff --git a/util/buffer.c b/util/buffer.c
> index 12bf2d7..c7a39ec 100644
> --- a/util/buffer.c
> +++ b/util/buffer.c
> @@ -77,3 +77,17 @@ void buffer_advance(Buffer *buffer, size_t len)
> (buffer->offset - len));
> buffer->offset -= len;
> }
> +
> +void buffer_move_empty(Buffer *to, Buffer *from)
> +{
> + assert(to->offset == 0);
> +
> + g_free(to->buffer);
> + to->offset = from->offset;
> + to->capacity = from->capacity;
> + to->buffer = from->buffer;
> +
> + from->offset = 0;
> + from->capacity = 0;
> + from->buffer = NULL;
> +}
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
- [Qemu-devel] [PATCH 00/19] buffer/vnc: improve vnc buffer hsndling, Gerd Hoffmann, 2015/10/30
- [Qemu-devel] [PATCH 08/19] vnc: kill jobs queue buffer, Gerd Hoffmann, 2015/10/30
- [Qemu-devel] [PATCH 05/19] buffer: add buffer_shrink, Gerd Hoffmann, 2015/10/30
- [Qemu-devel] [PATCH 04/19] buffer: add buffer_move, Gerd Hoffmann, 2015/10/30
- [Qemu-devel] [PATCH 03/19] buffer: add buffer_move_empty, Gerd Hoffmann, 2015/10/30
- Re: [Qemu-devel] [PATCH 03/19] buffer: add buffer_move_empty,
Daniel P. Berrange <=
- [Qemu-devel] [PATCH 10/19] vnc: zap dead code, Gerd Hoffmann, 2015/10/30
- [Qemu-devel] [PATCH 19/19] buffer: allow a buffer to shrink gracefully, Gerd Hoffmann, 2015/10/30
- [Qemu-devel] [PATCH 13/19] vnc: use vnc_{width, height} in vnc_set_area_dirty, Gerd Hoffmann, 2015/10/30
- [Qemu-devel] [PATCH 18/19] buffer: factor out buffer_adj_size, Gerd Hoffmann, 2015/10/30
- [Qemu-devel] [PATCH 17/19] buffer: factor out buffer_req_size, Gerd Hoffmann, 2015/10/30