From 8aea78bee82aaf92836a5a168991b519423efa39 Mon Sep 17 00:00:00 2001 From: cedric Date: Sun, 10 Jun 2012 12:15:02 +0000 Subject: [PATCH] edje: fix leak introduced by VIRTUAL. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/edje@71898 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/edje_data.c | 15 +++++++++++++-- src/lib/edje_load.c | 2 ++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/lib/edje_data.c b/src/lib/edje_data.c index e6150b7..05cf38a 100644 --- a/src/lib/edje_data.c +++ b/src/lib/edje_data.c @@ -30,6 +30,7 @@ Eet_Data_Descriptor *_edje_edd_edje_part = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_pointer = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_description_variant = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_description_rectangle = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_virtual = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_description_swallow = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_description_group = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_description_image = NULL; @@ -41,6 +42,7 @@ Eet_Data_Descriptor *_edje_edd_edje_part_description_table = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_description_external = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_description_variant_list = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_description_rectangle_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_virtual_pointer = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_description_swallow_pointer = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_description_group_pointer = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_description_image_pointer = NULL; @@ -189,6 +191,7 @@ _edje_edd_shutdown(void) FREED(_edje_edd_edje_part_pointer); FREED(_edje_edd_edje_part_description_variant); FREED(_edje_edd_edje_part_description_rectangle); + FREED(_edje_edd_edje_part_description_virtual); FREED(_edje_edd_edje_part_description_swallow); FREED(_edje_edd_edje_part_description_group); FREED(_edje_edd_edje_part_description_image); @@ -200,6 +203,7 @@ _edje_edd_shutdown(void) FREED(_edje_edd_edje_part_description_external); FREED(_edje_edd_edje_part_description_variant_list); FREED(_edje_edd_edje_part_description_rectangle_pointer); + FREED(_edje_edd_edje_part_description_virtual_pointer); FREED(_edje_edd_edje_part_description_swallow_pointer); FREED(_edje_edd_edje_part_description_group_pointer); FREED(_edje_edd_edje_part_description_image_pointer); @@ -566,6 +570,13 @@ _edje_edd_init(void) EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_rectangle, Edje_Part_Description_Common); EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common); + eddc.func.mem_free = mem_free_virtual; + eddc.func.mem_alloc = mem_alloc_virtual; + _edje_edd_edje_part_description_virtual = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_virtual, Edje_Part_Description_Common); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common); eddc.func.mem_free = mem_free_swallow; eddc.func.mem_alloc = mem_alloc_swallow; _edje_edd_edje_part_description_swallow = @@ -745,7 +756,7 @@ _edje_edd_init(void) eddc.func.type_set = _edje_description_variant_type_set; _edje_edd_edje_part_description_variant = eet_data_descriptor_file_new(&eddc); - EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "virtual", _edje_edd_edje_part_description_rectangle); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "virtual", _edje_edd_edje_part_description_virtual); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "rectangle", _edje_edd_edje_part_description_rectangle); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "swallow", _edje_edd_edje_part_description_swallow); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "group", _edje_edd_edje_part_description_group); @@ -771,7 +782,7 @@ _edje_edd_init(void) _edje_edd_edje_part_description_variant_list = eet_data_descriptor_file_new(&eddc); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "rectangle", rectangle); - EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "virtual", rectangle); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "virtual", virtual); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "swallow", swallow); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "group", group); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "image", image); diff --git a/src/lib/edje_load.c b/src/lib/edje_load.c index 5f5e587..47c724f 100644 --- a/src/lib/edje_load.c +++ b/src/lib/edje_load.c @@ -1444,6 +1444,7 @@ _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec, Edje_Part_Collec eina_mempool_del(ce->mp.BOX); eina_mempool_del(ce->mp.TABLE); eina_mempool_del(ce->mp.EXTERNAL); + eina_mempool_del(ce->mp.VIRTUAL); eina_mempool_del(ce->mp.part); memset(&ce->mp, 0, sizeof (ce->mp)); @@ -1457,6 +1458,7 @@ _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec, Edje_Part_Collec eina_mempool_del(ce->mp_rtl.BOX); eina_mempool_del(ce->mp_rtl.TABLE); eina_mempool_del(ce->mp_rtl.EXTERNAL); + eina_mempool_del(ce->mp_rtl.VIRTUAL); memset(&ce->mp_rtl, 0, sizeof (ce->mp_rtl)); free(ec); ce->ref = NULL; -- 2.7.4