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(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/