[libvirt] [PATCH V2] free buf->content when vsnprintf() failed
Daniel Veillard
veillard at redhat.com
Wed Apr 27 06:22:49 UTC 2011
On Wed, Apr 27, 2011 at 01:43:24PM +0800, Wen Congyang wrote:
> When buf->error is 1, we do not return buf->content in the function
> virBufferContentAndReset(). So we should free buf->content when
> vsnprintf() failed.
>
> ---
> Changes
> v1->v2
> - rename virBufferNoMemory() to virBufferSetError() and use it
> to free buf->content as Laine Stump suggested
>
> src/util/buf.c | 12 ++++++------
> 1 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/src/util/buf.c b/src/util/buf.c
> index 7557ad1..a3cc063 100644
> --- a/src/util/buf.c
> +++ b/src/util/buf.c
> @@ -39,7 +39,7 @@ struct _virBuffer {
> * freeing the content and setting the error flag.
> */
> static void
> -virBufferNoMemory(const virBufferPtr buf)
> +virBufferSetError(const virBufferPtr buf)
> {
> VIR_FREE(buf->content);
> buf->size = 0;
> @@ -70,7 +70,7 @@ virBufferGrow(virBufferPtr buf, unsigned int len)
> size = buf->use + len + 1000;
>
> if (VIR_REALLOC_N(buf->content, size) < 0) {
> - virBufferNoMemory(buf);
> + virBufferSetError(buf);
> return -1;
> }
> buf->size = size;
> @@ -241,7 +241,7 @@ virBufferVSprintf(const virBufferPtr buf, const char *format, ...)
> size = buf->size - buf->use;
> if ((count = vsnprintf(&buf->content[buf->use],
> size, format, argptr)) < 0) {
> - buf->error = 1;
> + virBufferSetError(buf);
> goto err;
> }
>
> @@ -259,7 +259,7 @@ virBufferVSprintf(const virBufferPtr buf, const char *format, ...)
> size = buf->size - buf->use;
> if ((count = vsnprintf(&buf->content[buf->use],
> size, format, argptr)) < 0) {
> - buf->error = 1;
> + virBufferSetError(buf);
> goto err;
> }
> }
> @@ -299,7 +299,7 @@ virBufferEscapeString(const virBufferPtr buf, const char *format, const char *st
> }
>
> if (VIR_ALLOC_N(escaped, 6 * len + 1) < 0) {
> - virBufferNoMemory(buf);
> + virBufferSetError(buf);
> return;
> }
>
> @@ -386,7 +386,7 @@ virBufferEscapeSexpr(const virBufferPtr buf,
> }
>
> if (VIR_ALLOC_N(escaped, 2 * len + 1) < 0) {
> - virBufferNoMemory(buf);
> + virBufferSetError(buf);
> return;
> }
>
ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list