diff --git a/legacy/edje/src/lib/edje_data.c b/legacy/edje/src/lib/edje_data.c index 9e3e165098..84e71b839f 100644 --- a/legacy/edje/src/lib/edje_data.c +++ b/legacy/edje/src/lib/edje_data.c @@ -20,14 +20,7 @@ Eet_Data_Descriptor *_edje_edd_edje_part_description = NULL; Eet_Data_Descriptor *_edje_edd_edje_part_image_id = NULL; #define NEWD(str, typ) \ - eet_data_descriptor_new(str, sizeof(typ), \ - (void *(*) (void *))evas_list_next, \ - (void *(*) (void *, void *))evas_list_append, \ - (void *(*) (void *))evas_list_data, \ - (void *(*) (void *))evas_list_free, \ - (void (*) (void *, int (*) (void *, const char *, void *, void *), void *))evas_hash_foreach, \ - (void *(*) (void *, const char *, void *))evas_hash_add, \ - (void (*) (void *))evas_hash_free) + { eddc.name = str; eddc.size = sizeof(typ); } #define FREED(eed) \ if (eed) \ @@ -61,66 +54,91 @@ _edje_edd_free(void) void _edje_edd_setup(void) { + Eet_Data_Descriptor_Class eddc; + + eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION; + eddc.func.mem_alloc = NULL; + eddc.func.mem_free = NULL; + eddc.func.str_alloc = evas_stringshare_add; + eddc.func.str_free = evas_stringshare_del; + eddc.func.list_next = evas_list_next; + eddc.func.list_append = evas_list_append; + eddc.func.list_data = evas_list_data; + eddc.func.list_free = evas_list_free; + eddc.func.hash_foreach = evas_hash_foreach; + eddc.func.hash_add = evas_hash_add; + eddc.func.hash_free = evas_hash_free; + /* font directory */ + NEWD("Edje_Font_Directory_Entry", + Edje_Font_Directory_Entry); _edje_edd_edje_font_directory_entry = - NEWD("Edje_Font_Directory_Entry", - Edje_Font_Directory_Entry); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_font_directory_entry, Edje_Font_Directory_Entry, "entry", entry, EET_T_STRING); + NEWD("Edje_Font_Directory", + Edje_Font_Directory); _edje_edd_edje_font_directory = - NEWD("Edje_Font_Directory", - Edje_Font_Directory); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_font_directory, Edje_Font_Directory, "entries", entries, _edje_edd_edje_font_directory_entry); /* image directory */ + NEWD("Edje_Image_Directory_Entry", + Edje_Image_Directory_Entry); _edje_edd_edje_image_directory_entry = - NEWD("Edje_Image_Directory_Entry", - Edje_Image_Directory_Entry); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "entry", entry, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "source_type", source_type, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "source_param", source_param, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "id", id, EET_T_INT); + NEWD("Edje_Image_Directory", + Edje_Image_Directory); _edje_edd_edje_image_directory = - NEWD("Edje_Image_Directory", - Edje_Image_Directory); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_image_directory, Edje_Image_Directory, "entries", entries, _edje_edd_edje_image_directory_entry); /* collection directory */ + NEWD("Edje_Part_Collection_Directory_Entry", + Edje_Part_Collection_Directory_Entry); _edje_edd_edje_part_collection_directory_entry = - NEWD("Edje_Part_Collection_Directory_Entry", - Edje_Part_Collection_Directory_Entry); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "entry", entry, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "id", id, EET_T_INT); + NEWD("Edje_Part_Collection_Directory", + Edje_Part_Collection_Directory); _edje_edd_edje_part_collection_directory = - NEWD("Edje_Part_Collection_Directory", - Edje_Part_Collection_Directory); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection_directory, Edje_Part_Collection_Directory, "entries", entries, _edje_edd_edje_part_collection_directory_entry); /* generic data attachment */ + NEWD("Edje_Data", + Edje_Data); _edje_edd_edje_data = - NEWD("Edje_Data", - Edje_Data); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_data, Edje_Data, "key", key, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_data, Edje_Data, "value", value, EET_T_STRING); + NEWD("Edje_Style_Tag", + Edje_Style_Tag); _edje_edd_edje_style_tag = - NEWD("Edje_Style_Tag", - Edje_Style_Tag); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_style_tag, Edje_Style_Tag, "key", key, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_style_tag, Edje_Style_Tag, "value", value, EET_T_STRING); + NEWD("Edje_Style", + Edje_Style); _edje_edd_edje_style = - NEWD("Edje_Style", - Edje_Style); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_style, Edje_Style, "name", name, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_style, Edje_Style, "tags", tags, _edje_edd_edje_style_tag); /* the main file directory */ + NEWD("Edje_File", + Edje_File); _edje_edd_edje_file = - NEWD("Edje_File", - Edje_File); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "compiler", compiler, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "version", version, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "feature_ver", feature_ver, EET_T_INT); @@ -131,19 +149,23 @@ _edje_edd_setup(void) EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_file, Edje_File, "styles", styles, _edje_edd_edje_style); /* parts & programs - loaded induvidually */ + NEWD("Edje_Program_Target", + Edje_Program_Target); _edje_edd_edje_program_target = - NEWD("Edje_Program_Target", - Edje_Program_Target); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program_target, Edje_Program_Target, "id", id, EET_T_INT); + NEWD("Edje_Program_After", + Edje_Program_After); _edje_edd_edje_program_after = - NEWD("Edje_Program_After", Edje_Program_After); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program_after, Edje_Program_After, "id", id, EET_T_INT); + NEWD("Edje_Program", + Edje_Program); _edje_edd_edje_program = - NEWD("Edje_Program", - Edje_Program); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "id", id, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "name", name, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "signal", signal, EET_T_STRING); @@ -160,14 +182,16 @@ _edje_edd_setup(void) EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_program, Edje_Program, "targets", targets, _edje_edd_edje_program_target); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_program, Edje_Program, "after", after, _edje_edd_edje_program_after); + NEWD("Edje_Part_Image_Id", + Edje_Part_Image_Id); _edje_edd_edje_part_image_id = - NEWD("Edje_Part_Image_Id", - Edje_Part_Image_Id); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_image_id, Edje_Part_Image_Id, "id", id, EET_T_INT); + NEWD("Edje_Part_Description", + Edje_Part_Description); _edje_edd_edje_part_description = - NEWD("Edje_Part_Description", - Edje_Part_Description); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "state.name", state.name, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "state.value", state.value, EET_T_DOUBLE); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "visible", visible, EET_T_CHAR); @@ -240,9 +264,10 @@ _edje_edd_setup(void) EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.id_text_source", text.id_text_source, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.elipsis", text.elipsis, EET_T_DOUBLE); + NEWD("Edje_Part", + Edje_Part); _edje_edd_edje_part = - NEWD("Edje_Part", - Edje_Part); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "name", name, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "id", id, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "type", type, EET_T_CHAR); @@ -261,9 +286,10 @@ _edje_edd_setup(void) EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.counfine_id", dragable.confine_id, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.events_id", dragable.events_id, EET_T_INT); + NEWD("Edje_Part_Collection", + Edje_Part_Collection); _edje_edd_edje_part_collection = - NEWD("Edje_Part_Collection", - Edje_Part_Collection); + eet_data_descriptor2_new(&eddc); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection, Edje_Part_Collection, "programs", programs, _edje_edd_edje_program); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection, Edje_Part_Collection, "parts", parts, _edje_edd_edje_part); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection, Edje_Part_Collection, "data", data, _edje_edd_edje_data); diff --git a/legacy/edje/src/lib/edje_load.c b/legacy/edje/src/lib/edje_load.c index 754fe66762..65e177e969 100644 --- a/legacy/edje/src/lib/edje_load.c +++ b/legacy/edje/src/lib/edje_load.c @@ -402,7 +402,7 @@ edje_file_collection_list(const char *file) Edje_Part_Collection_Directory_Entry *ce; ce = l->data; - lst = evas_list_append(lst, strdup(ce->entry)); + lst = evas_list_append(lst, evas_stringshare_add(ce->entry)); } } _edje_cache_file_unref(edf); @@ -421,7 +421,7 @@ edje_file_collection_list_free(Evas_List *lst) { while (lst) { - if (lst->data) free(lst->data); + if (lst->data) evas_stringshare_del(lst->data); lst = evas_list_remove(lst, lst->data); } } @@ -546,8 +546,8 @@ _edje_file_del(Edje *ed) /* I think it would be better swallowed objects dont get deleted */ /* evas_object_del(rp->swallowed_object);*/ } - if (rp->text.text) free(rp->text.text); - if (rp->text.font) free(rp->text.font); + if (rp->text.text) evas_stringshare_del(rp->text.text); + if (rp->text.font) evas_stringshare_del(rp->text.font); if (rp->text.cache.in_str) evas_stringshare_del(rp->text.cache.in_str); if (rp->text.cache.out_str) evas_stringshare_del(rp->text.cache.out_str); @@ -605,7 +605,7 @@ _edje_file_free(Edje_File *edf) fe = edf->font_dir->entries->data; edf->font_dir->entries = evas_list_remove(edf->font_dir->entries, fe); - if (fe->entry) free(fe->entry); + if (fe->entry) evas_stringshare_del(fe->entry); free(fe); } free(edf->font_dir); @@ -619,7 +619,7 @@ _edje_file_free(Edje_File *edf) ie = edf->image_dir->entries->data; edf->image_dir->entries = evas_list_remove(edf->image_dir->entries, ie); - if (ie->entry) free(ie->entry); + if (ie->entry) evas_stringshare_del(ie->entry); free(ie); } free(edf->image_dir); @@ -633,7 +633,7 @@ _edje_file_free(Edje_File *edf) ce = edf->collection_dir->entries->data; edf->collection_dir->entries = evas_list_remove(edf->collection_dir->entries, ce); - if (ce->entry) free(ce->entry); + if (ce->entry) evas_stringshare_del(ce->entry); free(ce); } free(edf->collection_dir); @@ -646,8 +646,8 @@ _edje_file_free(Edje_File *edf) edt = edf->data->data; edf->data = evas_list_remove(edf->data, edt); - if (edt->key) free(edt->key); - if (edt->value) free(edt->value); + if (edt->key) evas_stringshare_del(edt->key); + if (edt->value) evas_stringshare_del(edt->value); free(edt); } } @@ -668,7 +668,7 @@ _edje_file_free(Edje_File *edf) evas_hash_free(edf->collection_hash); } if (edf->path) evas_stringshare_del(edf->path); - if (edf->compiler) free(edf->compiler); + if (edf->compiler) evas_stringshare_del(edf->compiler); if (edf->collection_cache) _edje_cache_coll_flush(edf); _edje_textblock_style_cleanup(edf); free(edf); @@ -683,11 +683,11 @@ _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec) pr = ec->programs->data; ec->programs = evas_list_remove(ec->programs, pr); - if (pr->name) free(pr->name); - if (pr->signal) free(pr->signal); - if (pr->source) free(pr->source); - if (pr->state) free(pr->state); - if (pr->state2) free(pr->state2); + if (pr->name) evas_stringshare_del(pr->name); + if (pr->signal) evas_stringshare_del(pr->signal); + if (pr->source) evas_stringshare_del(pr->source); + if (pr->state) evas_stringshare_del(pr->state); + if (pr->state2) evas_stringshare_del(pr->state2); while (pr->targets) { Edje_Program_Target *prt; @@ -702,7 +702,7 @@ _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec) pa = pr->after->data; pr->after = evas_list_remove(pr->after, pa); - free(pa); + free(pa); } free(pr); } @@ -712,7 +712,7 @@ _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec) ep = ec->parts->data; ec->parts = evas_list_remove(ec->parts, ep); - if (ep->name) free(ep->name); + if (ep->name) evas_stringshare_del(ep->name); if (ep->default_desc) { _edje_collection_free_part_description_free(ep->default_desc); @@ -736,8 +736,8 @@ _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec) edt = ec->data->data; ec->data = evas_list_remove(ec->data, edt); - if (edt->key) free(edt->key); - if (edt->value) free(edt->value); + if (edt->key) evas_stringshare_del(edt->key); + if (edt->value) evas_stringshare_del(edt->value); free(edt); } } @@ -759,7 +759,7 @@ _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec) static void _edje_collection_free_part_description_free(Edje_Part_Description *desc) { - if (desc->state.name) free(desc->state.name); + if (desc->state.name) evas_stringshare_del(desc->state.name); while (desc->image.tween_list) { Edje_Part_Image_Id *pi; @@ -768,11 +768,11 @@ _edje_collection_free_part_description_free(Edje_Part_Description *desc) desc->image.tween_list = evas_list_remove(desc->image.tween_list, pi); free(pi); } - if (desc->color_class) free(desc->color_class); - if (desc->text.text) free(desc->text.text); - if (desc->text.text_class) free(desc->text.text_class); - if (desc->text.style) free(desc->text.style); - if (desc->text.font) free(desc->text.font); + if (desc->color_class) evas_stringshare_del(desc->color_class); + if (desc->text.text) evas_stringshare_del(desc->text.text); + if (desc->text.text_class) evas_stringshare_del(desc->text.text_class); + if (desc->text.style) evas_stringshare_del(desc->text.style); + if (desc->text.font) evas_stringshare_del(desc->text.font); free(desc); } diff --git a/legacy/edje/src/lib/edje_main.c b/legacy/edje/src/lib/edje_main.c index 2634244128..6e976effcf 100644 --- a/legacy/edje/src/lib/edje_main.c +++ b/legacy/edje/src/lib/edje_main.c @@ -112,8 +112,8 @@ _edje_del(Edje *ed) escb = ed->callbacks->data; ed->callbacks = evas_list_remove(ed->callbacks, escb); - free(escb->signal); - free(escb->source); + if (escb->signal) evas_stringshare_del(escb->signal); + if (escb->source) evas_stringshare_del(escb->source); free(escb); } while (ed->color_classes) diff --git a/legacy/edje/src/lib/edje_message_queue.c b/legacy/edje/src/lib/edje_message_queue.c index 9b2369ce4a..26bc9274ae 100644 --- a/legacy/edje/src/lib/edje_message_queue.c +++ b/legacy/edje/src/lib/edje_message_queue.c @@ -242,8 +242,8 @@ _edje_message_free(Edje_Message *em) Edje_Message_Signal *emsg; emsg = (Edje_Message_Signal *)em->msg; - if (emsg->sig) free(emsg->sig); - if (emsg->src) free(emsg->src); + if (emsg->sig) evas_stringshare_del(emsg->sig); + if (emsg->src) evas_stringshare_del(emsg->src); free(emsg); } break; @@ -293,8 +293,8 @@ _edje_message_send(Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id, v emsg2 = (Edje_Message_Signal *)emsg; emsg3 = calloc(1, sizeof(Edje_Message_Signal)); - if (emsg2->sig) emsg3->sig = strdup(emsg2->sig); - if (emsg2->src) emsg3->src = strdup(emsg2->src); + if (emsg2->sig) emsg3->sig = evas_stringshare_add(emsg2->sig); + if (emsg2->src) emsg3->src = evas_stringshare_add(emsg2->src); msg = (unsigned char *)emsg3; } break; diff --git a/legacy/edje/src/lib/edje_program.c b/legacy/edje/src/lib/edje_program.c index c14c1b8dfb..19944ed7aa 100644 --- a/legacy/edje/src/lib/edje_program.c +++ b/legacy/edje/src/lib/edje_program.c @@ -55,9 +55,9 @@ edje_object_signal_callback_add(Evas_Object *obj, const char *emission, const ch if (ed->delete_me) return; escb = calloc(1, sizeof(Edje_Signal_Callback)); if ((emission) && (emission[0])) - escb->signal = strdup(emission); + escb->signal = evas_stringshare_add(emission); if ((source) && (source[0])) - escb->source = strdup(source); + escb->source = evas_stringshare_add(source); escb->func = func; escb->data = data; ed->callbacks = evas_list_append(ed->callbacks, escb); @@ -107,8 +107,8 @@ edje_object_signal_callback_del(Evas_Object *obj, const char *emission, const ch else { ed->callbacks = evas_list_remove_list(ed->callbacks, l); - free(escb->signal); - free(escb->source); + if (escb->signal) evas_stringshare_del(escb->signal); + if (escb->source) evas_stringshare_del(escb->source); free(escb); } return data; @@ -765,19 +765,14 @@ _edje_emit_handle(Edje *ed, char *sig, char *src) #ifdef EDJE_PROGRAM_CACHE l1 = strlen(sig); l2 = strlen(src); - tmps = malloc(l1 + l2 + 2); - - if (tmps) - { - strcpy(tmps, sig); - tmps[l1] = '\377'; - strcpy(&(tmps[l1 + 1]), src); - } + tmps = alloca(l1 + l2 + 2); + strcpy(tmps, sig); + tmps[l1] = '\377'; + strcpy(&(tmps[l1 + 1]), src); #endif done = 0; #ifdef EDJE_PROGRAM_CACHE - if (tmps) { Evas_List *matches; @@ -795,7 +790,6 @@ _edje_emit_handle(Edje *ed, char *sig, char *src) _edje_program_run(ed, pr, 0, sig, src); if (_edje_block_break(ed)) { - if (tmps) free(tmps); goto break_prog; } } @@ -825,7 +819,6 @@ _edje_emit_handle(Edje *ed, char *sig, char *src) if (_edje_block_break(ed)) { #ifdef EDJE_PROGRAM_CACHE - if (tmps) free(tmps); evas_list_free(matches); #endif goto break_prog; @@ -850,15 +843,8 @@ _edje_emit_handle(Edje *ed, char *sig, char *src) _edje_emit_cb(ed, sig, src); if (_edje_block_break(ed)) { -#ifdef EDJE_PROGRAM_CACHE - if (tmps) free(tmps); -#endif goto break_prog; } -#ifdef EDJE_PROGRAM_CACHE - if (tmps) free(tmps); - tmps = NULL; -#endif } break_prog: _edje_thaw(ed); @@ -906,8 +892,8 @@ _edje_emit_cb(Edje *ed, char *sig, char *src) if (escb->delete_me) { ed->callbacks = evas_list_remove_list(ed->callbacks, l); - free(escb->signal); - free(escb->source); + if (escb->signal) evas_stringshare_del(escb->signal); + if (escb->source) evas_stringshare_del(escb->source); free(escb); } l = next_l; diff --git a/legacy/edje/src/lib/edje_text.c b/legacy/edje/src/lib/edje_text.c index 024acf260d..039251d28e 100644 --- a/legacy/edje/src/lib/edje_text.c +++ b/legacy/edje/src/lib/edje_text.c @@ -65,14 +65,14 @@ _edje_text_part_on_del(Edje *ed, Edje_Part *pt) if ((pt->default_desc) && (pt->default_desc->text.text_class)) { _edje_text_class_member_del(ed, pt->default_desc->text.text_class); - free(pt->default_desc->text.text_class); + evas_stringshare_del(pt->default_desc->text.text_class); pt->default_desc->text.text_class = NULL; } if (pt->default_desc && pt->default_desc->color_class) { _edje_color_class_member_del(ed, pt->default_desc->color_class); - free (pt->default_desc->color_class); + evas_stringshare_del(pt->default_desc->color_class); pt->default_desc->color_class = NULL; } @@ -84,14 +84,14 @@ _edje_text_part_on_del(Edje *ed, Edje_Part *pt) if (desc->text.text_class) { _edje_text_class_member_del(ed, desc->text.text_class); - free(desc->text.text_class); + evas_stringshare_del(desc->text.text_class); desc->text.text_class = NULL; } if (desc->color_class) { _edje_color_class_member_del(ed, desc->color_class); - free(desc->color_class); + evas_stringshare_del(desc->color_class); desc->color_class = NULL; } } diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index 7e9b9ee0ef..5895bb70d1 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -512,8 +512,8 @@ edje_object_part_text_set(Evas_Object *obj, const char *part, const char *text) if ((rp->text.text) && (text) && (!strcmp(rp->text.text, text))) return; - if (rp->text.text) free(rp->text.text); - if (text) rp->text.text = strdup(text); + if (rp->text.text) evas_stringshare_del(rp->text.text); + if (text) rp->text.text = evas_stringshare_add(text); else rp->text.text = NULL; ed->dirty = 1; _edje_recalc(ed);