simple patch for the monitor module to use stringshare where it seemed to be needed. I'm not super familiar with where stringshare needs to / should be used, but this seems to be enough to stop enlightenment from constantly SIGABRT-ing on shutdown or restart. I did read the stringshare code though.. nice reminder of how hash tables with buckets work, :) so i think i used it correctly.
I basically just turned all strdup's for the offending var's into evas_stringshare_add's, and their matching free's to evas_stringshare_del's. I pretty much assumed it was written corretly in the first place (ie, for each strdup(x), i replaced any and every free(x)) Thanks! d#
? .e_mod_main.c.swp Index: e_mod_main.c =================================================================== RCS file: /root/e17/apps/e_modules/src/modules/monitor/e_mod_main.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 e_mod_main.c --- e_mod_main.c 1 Nov 2005 12:05:04 -0000 1.1.1.1 +++ e_mod_main.c 8 Dec 2005 07:19:22 -0000 @@ -186,9 +186,9 @@ conf->cpu_interval = 1.0; conf->mem_interval = 1.0; conf->net_interval = 1.0; - conf->net_interface = strdup("eth0"); + conf->net_interface = evas_stringshare_add("eth0"); conf->wlan_interval = 1.0; - conf->wlan_interface = strdup("wlan0"); + conf->wlan_interface = evas_stringshare_add("wlan0"); conf->mem_real_ignore_cached = 0; conf->mem_real_ignore_buffers = 0; @@ -685,8 +685,8 @@ e_object_del(E_OBJECT(face->menu_cpu)); e_object_del(E_OBJECT(face->menu)); - free(face->conf->wlan_interface); - free(face->conf->net_interface); + evas_stringshare_del(face->conf->wlan_interface); + evas_stringshare_del(face->conf->net_interface); free(face->conf); free(face); _monitor_count--; @@ -1370,7 +1370,7 @@ Monitor_Face *face; face = data; - face->conf->net_interface = strdup(mi->label); + face->conf->net_interface = evas_stringshare_add(mi->label); net_interface_set(face->conf->net_interface); e_config_save_queue(); } @@ -1442,7 +1442,7 @@ Monitor_Face *face; face = data; - face->conf->wlan_interface = strdup(mi->label); + face->conf->wlan_interface = evas_stringshare_add(mi->label); wlan_interface_set(face->conf->wlan_interface); e_config_save_queue(); }