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

Wen Congyang wencongyang at gmail.com
Wed Apr 27 12:15:53 UTC 2011


At 2011-4-27 14:22, Daniel Veillard write:
> 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,

Thanks, pushed.

>
> Daniel
>




More information about the libvir-list mailing list