eina_content: free memory in error paths

This commit is contained in:
Marcel Hollerbach 2020-03-09 13:04:35 +01:00
parent b2ab297def
commit c4feaf10ad
1 changed files with 19 additions and 6 deletions

View File

@ -49,6 +49,8 @@ eina_content_converter_conversion_register(const char *from, const char *to, Ein
if (eina_content_converter_convert_can(from, to))
{
ERR("Convertion from %s to %s is already possible", from, to);
eina_stringshare_del(shared_from);
free(node);
return EINA_FALSE;
}
@ -132,10 +134,17 @@ eina_content_new(Eina_Slice data, const char *type)
EINA_SAFETY_ON_NULL_RETURN_VAL(content, NULL);
content->data = eina_slice_dup(data);
content->type = eina_stringshare_add(type);
EINA_SAFETY_ON_NULL_RETURN_VAL(content->data.mem, NULL);
EINA_SAFETY_ON_NULL_GOTO(content->data.mem, err);
_eina_content_ref(content);
return content;
err:
if (content)
{
free(content->data.mem);
content->data.mem = NULL;
}
return NULL;
}
EAPI void
@ -416,7 +425,8 @@ eina_value_content_new(Eina_Content *content)
{
Eina_Value *v = eina_value_new(EINA_VALUE_TYPE_CONTENT);
eina_value_pset(v, &content);
if (!eina_value_pset(v, &content))
return NULL;
return v;
}
@ -426,18 +436,21 @@ eina_value_content_init(Eina_Content *content)
{
Eina_Value v;
eina_value_setup(&v, EINA_VALUE_TYPE_CONTENT);
eina_value_pset(&v, &content);
EINA_SAFETY_ON_FALSE_RETURN_VAL(eina_value_setup(&v, EINA_VALUE_TYPE_CONTENT), EINA_VALUE_EMPTY);
EINA_SAFETY_ON_FALSE_RETURN_VAL(eina_value_pset(&v, &content), EINA_VALUE_EMPTY);
return v;
}
Eina_Content*
eina_value_to_content(const Eina_Value *value)
{
EINA_SAFETY_ON_FALSE_RETURN_VAL(eina_value_type_get(value) == EINA_VALUE_TYPE_CONTENT, NULL);
Eina_Content *result = calloc(1, sizeof(Eina_Content));
eina_value_pget(value, &result);
if (!eina_value_pget(value, &result))
{
free(result);
return NULL;
}
return result;
}