
1 Apr
2013
1 Apr
'13
3:52 p.m.
On 04/01/2013 03:45 PM, Corey Bryant wrote: >> + if (ret < 0) >> + goto cleanup; >> + >> + ret = -1; >> + >> + if (!(data = virJSONValueObjectGet(reply, "return"))) { >> + virReportError(VIR_ERR_INTERNAL_ERROR, >> + _("%s reply was missing return data"), >> + qmpCmd); >> + goto cleanup; >> + } >> + >> + if ((n = virJSONValueArraySize(data)) < 0) { >> + virReportError(VIR_ERR_INTERNAL_ERROR, >> + _("%s reply data was not an array"), >> + qmpCmd); >> + goto cleanup; >> + } >> + >> + /* null-terminated list */ >> + if (VIR_ALLOC_N(list, n + 1) < 0) { >> + virReportOOMError(); >> + goto cleanup; >> + } >> + >> + for (i = 0 ; i < n ; i++) { >> + virJSONValuePtr child = virJSONValueArrayGet(data, i); >> + const char *tmp; >> + >> + if (!(tmp = virJSONValueGetString(child))) { >> + virReportError(VIR_ERR_INTERNAL_ERROR, >> + _("%s array element does not contain data"), >> + qmpCmd); >> + goto cleanup; >> + } >> + >> + if (!(list[i] = strdup(tmp))) { >> + virReportOOMError(); >> + goto cleanup; >> + } >> + } >> + >> + ret = n; >> + *array = list; >> + >> +cleanup: >> + if (ret < 0) >> + virStringFreeList(list); >> + virJSONValueFree(cmd); >> + virJSONValueFree(reply); > + > > Does data need to be freed? > It doesn't seem to be the case for the 'return' object. No other code frees it, either. Stefan