diff --git a/src/bin/e_actions.c b/src/bin/e_actions.c index f3e6111e1..9765988bf 100644 --- a/src/bin/e_actions.c +++ b/src/bin/e_actions.c @@ -1052,25 +1052,22 @@ ACT_FN_GO(app) E_App *a = NULL; char *p, *p2; - p2 = strdup(params); - if (p2) + p2 = alloca(strlen(params) + 1); + strcpy(p2, params); + p = strchr(p2, ' '); + if (p) { - p = strchr(p2, ' '); - if (p) - { - *p = 0; - if (!strcmp(p2, "file:")) - a = e_app_file_find(p + 1); - else if (!strcmp(p2, "name:")) - a = e_app_name_find(p + 1); - else if (!strcmp(p2, "generic:")) - a = e_app_generic_find(p + 1); - else if (!strcmp(p2, "exe:")) - a = e_app_exe_find(p + 1); - if (a) - e_zone_app_exec(zone, a); - } - free(p2); + *p = 0; + if (!strcmp(p2, "file:")) + a = e_app_file_find(p + 1); + else if (!strcmp(p2, "name:")) + a = e_app_name_find(p + 1); + else if (!strcmp(p2, "generic:")) + a = e_app_generic_find(p + 1); + else if (!strcmp(p2, "exe:")) + a = e_app_exe_find(p + 1); + if (a) + e_zone_app_exec(zone, a); } } } diff --git a/src/bin/e_config_dialog.c b/src/bin/e_config_dialog.c index 1efcf5ff7..ac1513b05 100644 --- a/src/bin/e_config_dialog.c +++ b/src/bin/e_config_dialog.c @@ -25,10 +25,10 @@ e_config_dialog_new(E_Container *con, char *title, char *icon, int icon_size, E_ cfd = E_OBJECT_ALLOC(E_Config_Dialog, E_CONFIG_DIALOG_TYPE, _e_config_dialog_free); cfd->view = *view; cfd->con = con; - cfd->title = strdup(title); + cfd->title = evas_stringshare_add(title); if (icon) { - cfd->icon = strdup(icon); + cfd->icon = evas_stringshare_add(icon); cfd->icon_size = icon_size; } cfd->data = data; @@ -43,8 +43,8 @@ e_config_dialog_new(E_Container *con, char *title, char *icon, int icon_size, E_ static void _e_config_dialog_free(E_Config_Dialog *cfd) { - E_FREE(cfd->title); - E_FREE(cfd->icon); + evas_stringshare_del(cfd->title); + evas_stringshare_del(cfd->icon); if (cfd->cfdata) { cfd->view.free_cfdata(cfd, cfd->cfdata); diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index 1ecb5a267..1bc8aac2b 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -60,7 +60,7 @@ e_desk_new(E_Zone *zone, int x, int y) if ((cfname->zone >= 0) && (zone->num != cfname->zone)) continue; if ((cfname->desk_x != desk->x) || (cfname->desk_y != desk->y)) continue; - desk->name = strdup(cfname->name); + desk->name = evas_stringshare_add(cfname->name); ok = 1; break; } @@ -68,7 +68,7 @@ e_desk_new(E_Zone *zone, int x, int y) if (!ok) { snprintf(name, sizeof(name), _(e_config->desktop_default_name), x, y); - desk->name = strdup(name); + desk->name = evas_stringshare_add(name); } return desk; @@ -81,8 +81,8 @@ e_desk_name_set(E_Desk *desk, const char *name) E_OBJECT_CHECK(desk); E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE); - E_FREE(desk->name); - desk->name = strdup(name); + if (desk->name) evas_stringshare_del(desk->name); + desk->name = evas_stringshare_add(name); ev = E_NEW(E_Event_Desk_Name_Change, 1); ev->desk = desk; @@ -398,7 +398,7 @@ e_desk_prev(E_Zone *zone) static void _e_desk_free(E_Desk *desk) { - E_FREE(desk->name); + if (desk->name) evas_stringshare_del(desk->name); free(desk); } diff --git a/src/bin/e_font.c b/src/bin/e_font.c index 6adadf349..b818ef6f1 100644 --- a/src/bin/e_font.c +++ b/src/bin/e_font.c @@ -116,7 +116,7 @@ e_font_available_list_free(Evas_List *available) { efa = available->data; available = evas_list_remove_list(available, available); - E_FREE(efa->name); + if (efa->name) evas_stringshare_del(efa->name); E_FREE(efa); } } @@ -145,7 +145,7 @@ e_font_fallback_append(const char *font) e_font_fallback_remove (font); eff = E_NEW(E_Font_Fallback, 1); - eff->name = strdup(font); + eff->name = evas_stringshare_add(font); e_config->font_fallbacks = evas_list_append(e_config->font_fallbacks, eff); } @@ -175,7 +175,7 @@ e_font_fallback_remove(const char *font) { e_config->font_fallbacks = evas_list_remove_list( e_config->font_fallbacks, next); - E_FREE(eff->name); + if (eff->name) evas_stringshare_del(eff->name); E_FREE(eff); break; } @@ -200,8 +200,8 @@ e_font_default_set(const char *text_class, const char *font, int size) efd = evas_list_data(next); if (!strcmp(efd->text_class, text_class)) { - E_FREE(efd->font); - efd->font = strdup(font); + if (efd->font) evas_stringshare_del(efd->font); + efd->font = evas_stringshare_add(font); efd->size = size; /* move to the front of the list */ e_config->font_defaults = evas_list_remove_list( @@ -214,8 +214,8 @@ e_font_default_set(const char *text_class, const char *font, int size) /* the text class doesnt exist */ efd = E_NEW(E_Font_Default, 1); - efd->text_class = strdup(text_class); - efd->font = strdup(font); + efd->text_class = evas_stringshare_add(text_class); + efd->font = evas_stringshare_add(font); efd->size = size; e_config->font_defaults = evas_list_prepend(e_config->font_defaults, efd); @@ -265,8 +265,8 @@ e_font_default_remove(const char *text_class) { e_config->font_defaults = evas_list_remove_list( e_config->font_defaults, next); - E_FREE(efd->text_class); - E_FREE(efd->font); + if (efd->text_class) evas_stringshare_del(efd->text_class); + if (efd->font) evas_stringshare_del(efd->font); E_FREE(efd); return; } @@ -359,7 +359,7 @@ _e_font_font_dir_available_get(Evas_List *available_fonts, const char *font_dir) } efa = malloc(sizeof(E_Font_Available)); - efa->name = strdup(fname); + efa->name = evas_stringshare_add(fname); available_fonts = evas_list_append(available_fonts, efa); } fclose (f); diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c index 52ebade96..7da849376 100644 --- a/src/bin/e_gadget.c +++ b/src/bin/e_gadget.c @@ -34,7 +34,7 @@ e_gadget_new(E_Module *module, e_object_ref(E_OBJECT(gad->module)); if(!name) return NULL; - gad->name = strdup(name); + gad->name = evas_stringshare_add(name); gad->funcs.face_init = func_face_init; gad->funcs.face_free = func_face_free; @@ -187,7 +187,7 @@ _e_gadget_free(E_Gadget *gad) gad->module->config_menu = NULL; e_object_unref(E_OBJECT(gad->module)); e_object_del(E_OBJECT(gad->menu)); - free(gad->name); + if (gad->name) evas_stringshare_del(gad->name); free(gad); } diff --git a/src/bin/e_gadman.c b/src/bin/e_gadman.c index 20015bc3e..7afd8f230 100644 --- a/src/bin/e_gadman.c +++ b/src/bin/e_gadman.c @@ -379,8 +379,8 @@ e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance) { E_OBJECT_CHECK(gmc); E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE); - if (gmc->domain) free(gmc->domain); - gmc->domain = strdup(domain); + if (gmc->domain) evas_stringshare_del(gmc->domain); + gmc->domain = evas_stringshare_add(domain); gmc->instance = instance; } @@ -730,7 +730,7 @@ _e_gadman_client_free(E_Gadman_Client *gmc) if (gmc->control_object) evas_object_del(gmc->control_object); if (gmc->event_object) evas_object_del(gmc->event_object); gmc->gadman->clients = evas_list_remove(gmc->gadman->clients, gmc); - if (gmc->domain) free(gmc->domain); + if (gmc->domain) evas_stringshare_del(gmc->domain); _e_gadman_config_free(gmc->config); free(gmc); } diff --git a/src/bin/e_intl.c b/src/bin/e_intl.c index 187904634..974293a37 100644 --- a/src/bin/e_intl.c +++ b/src/bin/e_intl.c @@ -515,22 +515,21 @@ _e_intl_language_path_find(char *language) for (next_search = search_list ; next_search && !found ; next_search = next_search->next) { - char message_path[PATH_MAX]; - char *search_locale; - - search_locale = next_search->data; - snprintf(message_path, sizeof(message_path), "%s/%s/LC_MESSAGES/%s.mo", - epd->dir, search_locale, PACKAGE); - if (ecore_file_exists(message_path) && !ecore_file_is_dir(message_path)) - { - directory = strdup(epd->dir); - } + char message_path[PATH_MAX]; + char *search_locale; + + search_locale = next_search->data; + snprintf(message_path, sizeof(message_path), "%s/%s/LC_MESSAGES/%s.mo", + epd->dir, search_locale, PACKAGE); + if (ecore_file_exists(message_path) && !ecore_file_is_dir(message_path)) + { + directory = strdup(epd->dir); + } } - } e_path_dir_list_free(dir_list); - + while (search_list) { char *data; @@ -586,7 +585,7 @@ _e_intl_locale_alias_get(char *language) char *alias; if (language == NULL || !strncmp(language, "POSIX", strlen("POSIX"))) - return strdup("C"); + return strdup("C"); canonic = _e_intl_locale_canonic_get(language, E_LOC_ALL ); diff --git a/src/bin/e_ipc.c b/src/bin/e_ipc.c index 2213bd71b..1386ad05f 100644 --- a/src/bin/e_ipc.c +++ b/src/bin/e_ipc.c @@ -47,7 +47,6 @@ _e_ipc_cb_client_add(void *data __UNUSED__, int type __UNUSED__, void *event) e = event; if (ecore_ipc_client_server_get(e->client) != _e_ipc_server) return 1; - printf("E-IPC: client %p connected to server!\n", e->client); return 1; } @@ -58,7 +57,6 @@ _e_ipc_cb_client_del(void *data __UNUSED__, int type __UNUSED__, void *event) e = event; if (ecore_ipc_client_server_get(e->client) != _e_ipc_server) return 1; - printf("E-IPC: client %p disconnected from server!\n", e->client); /* delete client sruct */ ecore_ipc_client_del(e->client); return 1; @@ -79,12 +77,6 @@ _e_ipc_cb_client_data(void *data __UNUSED__, int type __UNUSED__, void *event) default: break; } - printf("E-IPC: client sent: [%i] [%i] (%i) \"%p\"\n", e->major, e->minor, e->size, e->data); - /* ecore_ipc_client_send(e->client, 1, 2, 7, 77, 0, "ABC", 4); */ - /* we can disconnect a client like this: */ - /* ecore_ipc_client_del(e->client); */ - /* or we can end a server by: */ - /* ecore_ipc_server_del(ecore_ipc_client_server_get(e->client)); */ return 1; } diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index 7268e2033..7654ddeb7 100644 --- a/src/bin/e_menu.c +++ b/src/bin/e_menu.c @@ -324,10 +324,10 @@ e_menu_title_set(E_Menu *m, char *title) return; if (m->header.title) { - free(m->header.title); + evas_stringshare_del(m->header.title); m->header.title = NULL; } - if (title) m->header.title = strdup(title); + if (title) m->header.title = evas_stringshare_add(title); else m->header.title = NULL; m->changed = 1; } @@ -421,11 +421,11 @@ e_menu_item_icon_file_set(E_Menu_Item *mi, const char *icon) if (((mi->icon) && (icon) && (!strcmp(icon, mi->icon))) || ((!mi->icon) && (!icon))) return; - if (mi->icon) free(mi->icon); - if (mi->icon_key) free(mi->icon_key); + if (mi->icon) evas_stringshare_del(mi->icon); + if (mi->icon_key) evas_stringshare_del(mi->icon_key); mi->icon = NULL; mi->icon_key = NULL; - if (icon) mi->icon = strdup(icon); + if (icon) mi->icon = evas_stringshare_add(icon); mi->changed = 1; mi->menu->changed = 1; } @@ -439,12 +439,12 @@ e_menu_item_icon_edje_set(E_Menu_Item *mi, const char *icon, const char *key) ((!mi->icon) && (!icon)) || ((key) && (mi->icon_key) && (!strcmp(key, mi->icon_key)))) return; - if (mi->icon) free(mi->icon); - if (mi->icon_key) free(mi->icon_key); + if (mi->icon) evas_stringshare_del(mi->icon); + if (mi->icon_key) evas_stringshare_del(mi->icon_key); mi->icon = NULL; mi->icon_key = NULL; - if (icon) mi->icon = strdup(icon); - if (key) mi->icon_key = strdup(key); + if (icon) mi->icon = evas_stringshare_add(icon); + if (key) mi->icon_key = evas_stringshare_add(key); mi->changed = 1; mi->menu->changed = 1; } @@ -457,9 +457,9 @@ e_menu_item_label_set(E_Menu_Item *mi, const char *label) if (((mi->label) && (label) && (!strcmp(label, mi->label))) || ((!mi->label) && (!label))) return; - if (mi->label) free(mi->label); + if (mi->label) evas_stringshare_del(mi->label); mi->label = NULL; - if (label) mi->label = strdup(label); + if (label) mi->label = evas_stringshare_add(label); mi->changed = 1; mi->menu->changed = 1; } @@ -863,6 +863,8 @@ _e_menu_free(E_Menu *m) m->in_active_list = 0; e_object_unref(E_OBJECT(m)); } + if (m->header.title) evas_stringshare_del(m->header.title); + if (m->header.icon_file) evas_stringshare_del(m->header.icon_file); free(m); } @@ -876,9 +878,9 @@ _e_menu_item_free(E_Menu_Item *mi) } if (mi->menu->realized) _e_menu_item_unrealize(mi); mi->menu->items = evas_list_remove(mi->menu->items, mi); - if (mi->icon) free(mi->icon); - if (mi->icon_key) free(mi->icon_key); - if (mi->label) free(mi->label); + if (mi->icon) evas_stringshare_del(mi->icon); + if (mi->icon_key) evas_stringshare_del(mi->icon_key); + if (mi->label) evas_stringshare_del(mi->label); free(mi); } diff --git a/src/bin/e_module.c b/src/bin/e_module.c index 1d72dc06a..d9236e684 100644 --- a/src/bin/e_module.c +++ b/src/bin/e_module.c @@ -186,7 +186,7 @@ e_module_new(char *name) init_done: _e_modules = evas_list_append(_e_modules, m); - m->name = strdup(name); + m->name = evas_stringshare_add(name); s = modpath ? ecore_file_get_dir(modpath) : NULL; if (s) { @@ -438,7 +438,7 @@ _e_module_free(E_Module *m) m->func.save(m); m->func.shutdown(m); } - if (m->name) free(m->name); + if (m->name) evas_stringshare_del(m->name); if (m->dir) free(m->dir); if (m->handle) dlclose(m->handle); _e_modules = evas_list_remove(_e_modules, m); diff --git a/src/bin/e_msg.c b/src/bin/e_msg.c index 91e55f514..0d6125371 100644 --- a/src/bin/e_msg.c +++ b/src/bin/e_msg.c @@ -56,8 +56,10 @@ e_msg_send(char *name, char *info, int val, E_Object *obj) E_Msg_Event *ev; ev = calloc(1, sizeof(E_Msg_Event)); - if (name) ev->name = strdup(name); - if (info) ev->info = strdup(info); + /* FIXME: probably better todup the strings but merge with a single + * malloc for the event struct */ + if (name) ev->name = evas_stringshare_add(name); + if (info) ev->info = evas_stringshare_add(info); ev->val = val; ev->obj = obj; if (ev->obj) e_object_ref(ev->obj); @@ -128,7 +130,7 @@ _e_msg_event_free(void *data, void *ev) E_Msg_Event *e; e = ev; - if (e->name) free(e->name); - if (e->info) free(e->info); + if (e->name) evas_stringshare_del(e->name); + if (e->info) evas_stringshare_del(e->info); if (e->obj) e_object_unref(e->obj); } diff --git a/src/bin/e_path.c b/src/bin/e_path.c index 4dbb64a93..462bbd06e 100644 --- a/src/bin/e_path.c +++ b/src/bin/e_path.c @@ -49,9 +49,10 @@ e_path_default_path_append(E_Path *ep, const char *path) return; } - epd->dir = new_path; strcpy(new_path, home_dir); strcat(new_path, path + 1); + epd->dir = evas_stringshare_add(new_path); + free(new_path); free(home_dir); ep->default_dir_list = evas_list_append(ep->default_dir_list, epd); } @@ -61,7 +62,7 @@ e_path_default_path_append(E_Path *ep, const char *path) epd = malloc(sizeof(E_Path_Dir)); if (!epd) return; - epd->dir = strdup(path); + epd->dir = evas_stringshare_add(path); ep->default_dir_list = evas_list_append(ep->default_dir_list, epd); } _e_path_cache_free(ep); @@ -109,9 +110,10 @@ e_path_user_path_append(E_Path *ep, const char *path) return; } - epd->dir = new_path; strcpy(new_path, home_dir); strcat(new_path, path + 1); + epd->dir = evas_stringshare_add(new_path); + free(new_path); free(home_dir); *(ep->user_dir_list) = evas_list_append(*(ep->user_dir_list), epd); } @@ -121,7 +123,7 @@ e_path_user_path_append(E_Path *ep, const char *path) epd = malloc(sizeof(E_Path_Dir)); if (!epd) return; - epd->dir = strdup(path); + epd->dir = evas_stringshare_add(path); *(ep->user_dir_list) = evas_list_append(*(ep->user_dir_list), epd); } _e_path_cache_free(ep); @@ -158,9 +160,10 @@ e_path_user_path_prepend(E_Path *ep, const char *path) return; } - epd->dir = new_path; strcpy(new_path, home_dir); strcat(new_path, path + 1); + epd->dir = evas_stringshare_add(new_path); + free(new_path); free(home_dir); *(ep->user_dir_list) = evas_list_prepend(*(ep->user_dir_list), epd); } @@ -170,7 +173,7 @@ e_path_user_path_prepend(E_Path *ep, const char *path) epd = malloc(sizeof(E_Path_Dir)); if (!epd) return; - epd->dir = strdup(path); + epd->dir = evas_stringshare_add(path); *(ep->user_dir_list) = evas_list_prepend(*(ep->user_dir_list), epd); } _e_path_cache_free(ep); @@ -214,7 +217,7 @@ e_path_user_path_remove(E_Path *ep, const char *path) { *(ep->user_dir_list) = evas_list_remove_list( *(ep->user_dir_list), l); - free(epd->dir); + evas_stringshare_del(epd->dir); free(epd); free(new_path); _e_path_cache_free(ep); @@ -236,7 +239,7 @@ e_path_user_path_remove(E_Path *ep, const char *path) { *(ep->user_dir_list) = evas_list_remove_list( *(ep->user_dir_list), l); - free(epd->dir); + evas_stringshare_del(epd->dir); free(epd); _e_path_cache_free(ep); return; @@ -277,7 +280,8 @@ e_path_find(E_Path *ep, const char *file) free(rp); if (evas_hash_size(ep->hash) >= 512) _e_path_cache_free(ep); - ep->hash = evas_hash_add(ep->hash, file, strdup(buf)); + ep->hash = evas_hash_add(ep->hash, file, + evas_stringshare_add(buf)); return strdup(buf); } if (rp) free(rp); @@ -301,7 +305,8 @@ e_path_find(E_Path *ep, const char *file) free(rp); if (evas_hash_size(ep->hash) >= 512) _e_path_cache_free(ep); - ep->hash = evas_hash_add(ep->hash, file, strdup(buf)); + ep->hash = evas_hash_add(ep->hash, file, + evas_stringshare_add(buf)); return strdup(buf); } if (rp) free(rp); @@ -328,7 +333,7 @@ e_path_evas_append(E_Path *ep, Evas *evas) epd = l->data; if (epd->dir) evas_font_path_append(evas, epd->dir); - free(epd->dir); + evas_stringshare_del(epd->dir); free(epd); } if (dir_list) evas_list_free(dir_list); @@ -351,7 +356,7 @@ e_path_dir_list_get(E_Path *ep) { epd = l->data; new_epd = malloc(sizeof(E_Path_Dir)); - new_epd->dir = strdup(epd->dir); + new_epd->dir = evas_stringshare_add(epd->dir); dir_list = evas_list_append(dir_list, new_epd); } } @@ -360,7 +365,7 @@ e_path_dir_list_get(E_Path *ep) { epd = l->data; new_epd = malloc(sizeof(E_Path_Dir)); - new_epd->dir = strdup(epd->dir); + new_epd->dir = evas_stringshare_add(epd->dir); dir_list = evas_list_append(dir_list, new_epd); } @@ -376,7 +381,7 @@ e_path_dir_list_free(Evas_List *dir_list) { epd = dir_list->data; dir_list = evas_list_remove_list(dir_list, dir_list); - free(epd->dir); + evas_stringshare_del(epd->dir); free(epd); } } @@ -390,10 +395,10 @@ _e_path_free(E_Path *ep) { E_Path_Dir *epd; epd = ep->default_dir_list->data; - free(epd->dir); + evas_stringshare_del(epd->dir); free(epd); ep->default_dir_list = evas_list_remove_list(ep->default_dir_list, - ep->default_dir_list); + ep->default_dir_list); } free(ep); } @@ -410,6 +415,6 @@ _e_path_cache_free(E_Path *ep) static Evas_Bool _e_path_cache_free_cb(Evas_Hash *hash __UNUSED__, const char *key __UNUSED__, void *data, void *fdata __UNUSED__) { - free(data); + evas_stringshare_del(data); return 1; }