mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
util: json: use VIR_AUTOFREE instead of VIR_FREE for scalar types
By making use of GNU C's cleanup attribute handled by the VIR_AUTOFREE macro for declaring scalar variables, majority of the VIR_FREE calls can be dropped, which in turn leads to getting rid of most of our cleanup sections. Signed-off-by: Sukrit Bhatnagar <skrtbhtngr@gmail.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
b5b5cdd69c
commit
b07ee8074e
@ -496,65 +496,50 @@ virJSONValueNewNumber(const char *data)
|
|||||||
virJSONValuePtr
|
virJSONValuePtr
|
||||||
virJSONValueNewNumberInt(int data)
|
virJSONValueNewNumberInt(int data)
|
||||||
{
|
{
|
||||||
virJSONValuePtr val = NULL;
|
VIR_AUTOFREE(char *) str = NULL;
|
||||||
char *str;
|
|
||||||
if (virAsprintf(&str, "%i", data) < 0)
|
if (virAsprintf(&str, "%i", data) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
val = virJSONValueNewNumber(str);
|
return virJSONValueNewNumber(str);
|
||||||
VIR_FREE(str);
|
|
||||||
return val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virJSONValuePtr
|
virJSONValuePtr
|
||||||
virJSONValueNewNumberUint(unsigned int data)
|
virJSONValueNewNumberUint(unsigned int data)
|
||||||
{
|
{
|
||||||
virJSONValuePtr val = NULL;
|
VIR_AUTOFREE(char *) str = NULL;
|
||||||
char *str;
|
|
||||||
if (virAsprintf(&str, "%u", data) < 0)
|
if (virAsprintf(&str, "%u", data) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
val = virJSONValueNewNumber(str);
|
return virJSONValueNewNumber(str);
|
||||||
VIR_FREE(str);
|
|
||||||
return val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virJSONValuePtr
|
virJSONValuePtr
|
||||||
virJSONValueNewNumberLong(long long data)
|
virJSONValueNewNumberLong(long long data)
|
||||||
{
|
{
|
||||||
virJSONValuePtr val = NULL;
|
VIR_AUTOFREE(char *) str = NULL;
|
||||||
char *str;
|
|
||||||
if (virAsprintf(&str, "%lld", data) < 0)
|
if (virAsprintf(&str, "%lld", data) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
val = virJSONValueNewNumber(str);
|
return virJSONValueNewNumber(str);
|
||||||
VIR_FREE(str);
|
|
||||||
return val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virJSONValuePtr
|
virJSONValuePtr
|
||||||
virJSONValueNewNumberUlong(unsigned long long data)
|
virJSONValueNewNumberUlong(unsigned long long data)
|
||||||
{
|
{
|
||||||
virJSONValuePtr val = NULL;
|
VIR_AUTOFREE(char *) str = NULL;
|
||||||
char *str;
|
|
||||||
if (virAsprintf(&str, "%llu", data) < 0)
|
if (virAsprintf(&str, "%llu", data) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
val = virJSONValueNewNumber(str);
|
return virJSONValueNewNumber(str);
|
||||||
VIR_FREE(str);
|
|
||||||
return val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virJSONValuePtr
|
virJSONValuePtr
|
||||||
virJSONValueNewNumberDouble(double data)
|
virJSONValueNewNumberDouble(double data)
|
||||||
{
|
{
|
||||||
virJSONValuePtr val = NULL;
|
VIR_AUTOFREE(char *) str = NULL;
|
||||||
char *str;
|
|
||||||
if (virDoubleToStr(&str, data) < 0)
|
if (virDoubleToStr(&str, data) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
val = virJSONValueNewNumber(str);
|
return virJSONValueNewNumber(str);
|
||||||
VIR_FREE(str);
|
|
||||||
return val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1171,10 +1156,9 @@ int
|
|||||||
virJSONValueGetArrayAsBitmap(const virJSONValue *val,
|
virJSONValueGetArrayAsBitmap(const virJSONValue *val,
|
||||||
virBitmapPtr *bitmap)
|
virBitmapPtr *bitmap)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
|
||||||
virJSONValuePtr elem;
|
virJSONValuePtr elem;
|
||||||
size_t i;
|
size_t i;
|
||||||
unsigned long long *elems = NULL;
|
VIR_AUTOFREE(unsigned long long *) elems = NULL;
|
||||||
unsigned long long maxelem = 0;
|
unsigned long long maxelem = 0;
|
||||||
|
|
||||||
*bitmap = NULL;
|
*bitmap = NULL;
|
||||||
@ -1191,25 +1175,20 @@ virJSONValueGetArrayAsBitmap(const virJSONValue *val,
|
|||||||
|
|
||||||
if (elem->type != VIR_JSON_TYPE_NUMBER ||
|
if (elem->type != VIR_JSON_TYPE_NUMBER ||
|
||||||
virStrToLong_ullp(elem->data.number, NULL, 10, &elems[i]) < 0)
|
virStrToLong_ullp(elem->data.number, NULL, 10, &elems[i]) < 0)
|
||||||
goto cleanup;
|
return -1;
|
||||||
|
|
||||||
if (elems[i] > maxelem)
|
if (elems[i] > maxelem)
|
||||||
maxelem = elems[i];
|
maxelem = elems[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(*bitmap = virBitmapNewQuiet(maxelem + 1)))
|
if (!(*bitmap = virBitmapNewQuiet(maxelem + 1)))
|
||||||
goto cleanup;
|
return -1;
|
||||||
|
|
||||||
/* second pass sets the correct bits in the map */
|
/* second pass sets the correct bits in the map */
|
||||||
for (i = 0; i < val->data.array.nvalues; i++)
|
for (i = 0; i < val->data.array.nvalues; i++)
|
||||||
ignore_value(virBitmapSetBit(*bitmap, elems[i]));
|
ignore_value(virBitmapSetBit(*bitmap, elems[i]));
|
||||||
|
|
||||||
ret = 0;
|
return 0;
|
||||||
|
|
||||||
cleanup:
|
|
||||||
VIR_FREE(elems);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user