forked from enlightenment/efl
Edje data: Fix memory leak in nested data descriptors
This commit is contained in:
parent
c418910948
commit
b54fe3fe61
|
@ -191,6 +191,7 @@ struct _Eet_Data_Element
|
||||||
int counter_offset; /* for a variable array we need the offset of the count variable */
|
int counter_offset; /* for a variable array we need the offset of the count variable */
|
||||||
unsigned char type; /* EET_T_XXX */
|
unsigned char type; /* EET_T_XXX */
|
||||||
unsigned char group_type; /* EET_G_XXX */
|
unsigned char group_type; /* EET_G_XXX */
|
||||||
|
Eina_Bool subtype_free : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _Eet_Data_Encode_Hash_Info
|
struct _Eet_Data_Encode_Hash_Info
|
||||||
|
@ -2108,7 +2109,15 @@ eet_data_descriptor_free(Eet_Data_Descriptor *edd)
|
||||||
|
|
||||||
_eet_descriptor_hash_free(edd);
|
_eet_descriptor_hash_free(edd);
|
||||||
if (edd->elements.set)
|
if (edd->elements.set)
|
||||||
free(edd->elements.set);
|
{
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < edd->elements.num; i++)
|
||||||
|
{
|
||||||
|
if (edd->elements.set[i].subtype_free)
|
||||||
|
eet_data_descriptor_free(edd->elements.set[i].subtype);
|
||||||
|
}
|
||||||
|
free(edd->elements.set);
|
||||||
|
}
|
||||||
|
|
||||||
free(edd);
|
free(edd);
|
||||||
}
|
}
|
||||||
|
@ -2200,6 +2209,7 @@ eet_data_descriptor_element_add(Eet_Data_Descriptor *edd,
|
||||||
ede = &(edd->elements.set[edd->elements.num - 1]);
|
ede = &(edd->elements.set[edd->elements.num - 1]);
|
||||||
ede->name = name;
|
ede->name = name;
|
||||||
ede->directory_name_ptr = NULL;
|
ede->directory_name_ptr = NULL;
|
||||||
|
ede->subtype_free = EINA_FALSE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We do a special case when we do list,hash or whatever group of simple type.
|
* We do a special case when we do list,hash or whatever group of simple type.
|
||||||
|
@ -2229,6 +2239,7 @@ eet_data_descriptor_element_add(Eet_Data_Descriptor *edd,
|
||||||
/* 0, */ NULL,
|
/* 0, */ NULL,
|
||||||
NULL);
|
NULL);
|
||||||
type = EET_T_UNKNOW;
|
type = EET_T_UNKNOW;
|
||||||
|
ede->subtype_free = EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ede->type = type;
|
ede->type = type;
|
||||||
|
|
Loading…
Reference in New Issue