[libvirt] [PATCH V2] free buf->content when vsnprintf() failed

Wen Congyang wency at cn.fujitsu.com
Wed Apr 27 05:43:24 UTC 2011


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;
     }
 
-- 
1.7.1




More information about the libvir-list mailing list