(*values)[idx] = (char*)malloc(sizeof(char) * (stringSize + 1));
if ((*values)[idx] == NULL) {
LOGE("Failed to convert string to char*");
+
+ for (int start = idx - 1; start >= 0; --start) {
+ free((*values)[start]);
+ ((*values)[start]) = NULL;
+ }
+
+ free(*values);
return MEDIA_VISION_ERROR_OUT_OF_MEMORY;
}
if (attributeValue[idx].copy((*values)[idx], stringSize) != attributeValue[idx].size()) {
LOGE("Conversion from string to char* failed");
- free((*values)[idx]);
- ((*values)[idx]) = NULL;
+
+ for (int start = idx; start >= 0; --start) {
+ free((*values)[start]);
+ ((*values)[start]) = NULL;
+ }
+
+ free(*values);
return MEDIA_VISION_ERROR_INVALID_OPERATION;
}
((*values)[idx])[stringSize] = '\0';
name, idx, (*values)[idx]);
}
- /*
- if ((*value) == NULL) {
- LOGE("Failed to convert string to char*");
- return MEDIA_VISION_ERROR_OUT_OF_MEMORY;
- }
-
- if (attributeValue.copy(*value, stringSize) != attributeValue.size()) {
- LOGE("Conversion from string to char* failed");
- free(*value);
- (*value) = NULL;
- return MEDIA_VISION_ERROR_INVALID_OPERATION;
- }
- (*value)[stringSize] = '\0';
-
- LOGD("Attribute [%s] (value %s) has been gotten",
- name, *value);
- */
return ret;
}