Enlightenment CVS committal

Author  : shorne
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_int_config_intl.c 


Log Message:
Free up configuration data

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_intl.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_int_config_intl.c 21 Sep 2006 10:58:42 -0000      1.1
+++ e_int_config_intl.c 21 Sep 2006 11:52:52 -0000      1.2
@@ -27,6 +27,9 @@
 static Evas_Bool _lang_hash_cb(Evas_Hash *hash, const char *key, void *data, 
void *fdata);
 static Evas_Bool _region_hash_cb(Evas_Hash *hash, const char *key, void *data, 
void *fdata);
 
+static Evas_Bool _language_hash_free_cb(Evas_Hash *hash, const char *key, void 
*data, void *fdata);
+static Evas_Bool _region_hash_free_cb(Evas_Hash *hash, const char *key, void 
*data, void *fdata);
+
 struct _E_Intl_Pair
 {
    const char  *locale_key;
@@ -675,8 +678,59 @@
 _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
    E_FREE(cfdata->cur_language);
+   E_FREE(cfdata->cur_blang);
+   E_FREE(cfdata->cur_lang);
+   E_FREE(cfdata->cur_reg);
+   E_FREE(cfdata->cur_cs);
+   E_FREE(cfdata->cur_mod);
 
+   evas_hash_foreach(cfdata->locale_hash, _language_hash_free_cb, NULL);
+   evas_hash_free(cfdata->locale_hash);
+   
    free(cfdata);
+}
+
+static Evas_Bool 
+_language_hash_free_cb(Evas_Hash *hash, const char *key, void *data, void 
*fdata)
+{
+   E_Intl_Language_Node *node;
+
+   node = data;   
+   if (node->lang_code) evas_stringshare_del(node->lang_code);
+   evas_hash_foreach(node->region_hash, _region_hash_free_cb, NULL);
+   evas_hash_free(node->region_hash);
+   free(node); 
+   
+   return 1;
+}
+
+static Evas_Bool 
+_region_hash_free_cb(Evas_Hash *hash, const char *key, void *data, void *fdata)
+{ 
+   E_Intl_Region_Node *node;
+
+   node = data;   
+   if (node->region_code) evas_stringshare_del(node->region_code);
+   while (node->available_codesets) 
+     {
+       const char *str;
+
+       str = node->available_codesets->data;
+       if (str) evas_stringshare_del(str);
+       node->available_codesets = 
evas_list_remove_list(node->available_codesets, node->available_codesets);
+     }
+    
+   while (node->available_modifiers) 
+     {
+       const char *str;
+
+       str = node->available_modifiers->data;
+       if (str) evas_stringshare_del(str);
+       node->available_modifiers = 
evas_list_remove_list(node->available_modifiers, node->available_modifiers);
+     }
+   
+   free(node);  
+   return 1;
 }
 
 static int



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to