[ekg2-commit] r4654 - trunk/ekg: trunk/ekg/dynstuff.c trunk/ekg/userlist.c

SVN commit svn w toxygen.net
Czw, 18 Wrz 2008, 00:17:45 CEST


Author: wiechu
Date: 2008-09-18 00:17:45 +0200 (Thu, 18 Sep 2008)
New Revision: 4654

Modified:
   trunk/ekg/dynstuff.c
   trunk/ekg/userlist.c
Log:
    - fix memleak (reported by darkjames on !ekg2)
    - speed up private_item_find()

Modified: trunk/ekg/dynstuff.c
===================================================================
--- trunk/ekg/dynstuff.c	2008-09-17 22:15:56 UTC (rev 4653)
+++ trunk/ekg/dynstuff.c	2008-09-17 22:17:45 UTC (rev 4654)
@@ -1409,14 +1409,16 @@
 
 static private_data_t *private_item_find(private_data_t **data, const char *item_name) {
 	private_data_t *item;
+	int cmp;
 
 	if (!item_name)
 		return NULL;
 
 	for (item = *data; item; item = item->next) {
-		int cmp = xstrcmp(item->name, item_name);
-		if (!cmp)
+		if ( !(cmp = xstrcmp(item->name, item_name)) )
 			return item;
+		if (cmp>0)
+			return NULL;
 	}
 
 	return NULL;

Modified: trunk/ekg/userlist.c
===================================================================
--- trunk/ekg/userlist.c	2008-09-17 22:15:56 UTC (rev 4653)
+++ trunk/ekg/userlist.c	2008-09-17 22:17:45 UTC (rev 4654)
@@ -102,10 +102,7 @@
 static LIST_ADD_COMPARE(userlist_compare, userlist_t *) { return xstrcasecmp(data1->nickname, data2->nickname); }
 static LIST_FREE_ITEM(userlist_free_item, userlist_t *) {
 	userlist_private_free(data);
-	if (data->priv_list) {
-		private_data_free(data->priv_list);
-		xfree(data->priv_list);
-	}
+	private_items_destroy(&data->priv_list);
 	xfree(data->uid); xfree(data->nickname); xfree(data->descr); xfree(data->foreign); xfree(data->last_descr);
 	ekg_groups_destroy(&(data->groups));
 	ekg_resources_destroy(&(data->resources));



Więcej informacji o liście dyskusyjnej ekg2-commit