[Gnucash-changes] r13768 - gnucash/trunk - * lib/libqof/qof/qofbookmerge.c: fix a few memory leaks.

Derek Atkins warlord at cvs.gnucash.org
Tue Apr 11 11:20:05 EDT 2006


Author: warlord
Date: 2006-04-11 11:20:04 -0400 (Tue, 11 Apr 2006)
New Revision: 13768
Trac: http://svn.gnucash.org/trac/changeset/13768

Modified:
   gnucash/trunk/ChangeLog
   gnucash/trunk/lib/libqof/qof/qofbookmerge.c
Log:
* lib/libqof/qof/qofbookmerge.c: fix a few memory leaks.



Modified: gnucash/trunk/ChangeLog
===================================================================
--- gnucash/trunk/ChangeLog	2006-04-11 03:12:09 UTC (rev 13767)
+++ gnucash/trunk/ChangeLog	2006-04-11 15:20:04 UTC (rev 13768)
@@ -1,3 +1,7 @@
+2006-04-11  Derek Atkins  <derek at ihtfp.com>
+
+	* lib/libqof/qof/qofbookmerge.c: fix a few memory leaks.
+
 2006-04-10  Derek Atkins  <derek at ihtfp.com>
 
 	* src/import-export/hbci/gnc-hbci-gettrans.c:

Modified: gnucash/trunk/lib/libqof/qof/qofbookmerge.c
===================================================================
--- gnucash/trunk/lib/libqof/qof/qofbookmerge.c	2006-04-11 03:12:09 UTC (rev 13767)
+++ gnucash/trunk/lib/libqof/qof/qofbookmerge.c	2006-04-11 15:20:04 UTC (rev 13768)
@@ -285,7 +285,7 @@
 {
 	struct QofBookMergeRuleIterate iter;
 	QofBookMergeRule *currentRule;
-	GList *subList;
+	GList *subList, *node;
 
 	g_return_if_fail(cb != NULL);
 	g_return_if_fail(mergeData != NULL);
@@ -296,13 +296,12 @@
 
 	iter.fcn = cb;
 	subList = NULL;
-	iter.ruleList = g_list_copy(mergeData->mergeList);
-	while(iter.ruleList!=NULL) {
-		currentRule = iter.ruleList->data;
+	iter.ruleList = NULL;
+	for (node = mergeData->mergeList; node != NULL; node = node->next) {
+		currentRule = node->data;
 		if(currentRule->mergeResult == mergeResult) {
 			subList = g_list_prepend(subList, currentRule);
 		}
-		iter.ruleList = g_list_next(iter.ruleList);
 	}
 	iter.remainder = g_list_length(subList);
 	iter.data = mergeData;
@@ -747,7 +746,7 @@
 {
 	QofBookMergeData *mergeData;
 	QofBookMergeRule *currentRule;
-	GList *check;
+	GList *node;
 
 	g_return_val_if_fail((importBook != NULL)&&(targetBook != NULL), NULL);
 	mergeData = g_new(QofBookMergeData, 1);
@@ -767,16 +766,13 @@
 		qof_book_merge_match_orphans(mergeData);
 	}
 	
-	check = g_list_copy(mergeData->mergeList);
-	while(check != NULL) {
-		currentRule = check->data;
+	for (node = mergeData->mergeList; node != NULL; node = node->next) {
+		currentRule = node->data;
 		if(currentRule->mergeResult == MERGE_INVALID) {
 			mergeData->abort = TRUE;
 			return(NULL);
 		}
-		check = g_list_next(check);
 	}
-	g_list_free(check);
 	return mergeData;
 }
 
@@ -944,7 +940,7 @@
 qof_book_merge_commit(QofBookMergeData *mergeData )
 {
 	QofBookMergeRule *currentRule;
-	GList *check;
+	GList *check, *node;
 
 	g_return_val_if_fail(mergeData != NULL, -1);
 	g_return_val_if_fail(mergeData->mergeList != NULL, -1);
@@ -952,22 +948,23 @@
 	if(mergeData->abort == TRUE) return -1;
 	check = g_list_copy(mergeData->mergeList);
 	g_return_val_if_fail(check != NULL, -1);
-	while(check != NULL) {
-		currentRule = check->data;
+	for (node = check; node != NULL; node = node->next) {
+		currentRule = node->data;
 		if(currentRule->mergeResult == MERGE_INVALID) {
 			qof_book_merge_abort(mergeData);
+			g_list_free(check);
 			return(-2);
 		}
 		if(currentRule->mergeResult == MERGE_REPORT) {
 			g_list_free(check);
 			return 1;
 		}
-		check = g_list_next(check);
 	}
+	g_list_free(check);
 	qof_book_merge_commit_foreach(qof_book_merge_commit_rule_loop, 
-        MERGE_NEW, mergeData);
+				      MERGE_NEW, mergeData);
 	qof_book_merge_commit_foreach(qof_book_merge_commit_rule_loop, 
-        MERGE_UPDATE, mergeData);
+				      MERGE_UPDATE, mergeData);
 	/* Placeholder for QofObject merge_helper_cb - all objects
         and all parameters set */
 	while(mergeData->mergeList != NULL) {
@@ -992,7 +989,7 @@
 {
 	struct QofBookMergeRuleIterate iter;
 	QofBookMergeRule *currentRule;
-	GList *matching_rules;
+	GList *matching_rules, *node;
 
 	g_return_if_fail(cb != NULL);
 	g_return_if_fail(mergeData != NULL);
@@ -1003,13 +1000,12 @@
 	iter.fcn = cb;
 	iter.data = mergeData;
 	matching_rules = NULL;
-	iter.ruleList = g_list_copy(mergeData->mergeList);
-	while(iter.ruleList!=NULL) {
-		currentRule = iter.ruleList->data;
+	iter.ruleList = NULL;
+	for (node = mergeData->mergeList; node != NULL; node = node->next) {
+		currentRule = node->data;
 		if(currentRule->mergeResult == mergeResult) {
 			matching_rules = g_list_prepend(matching_rules, currentRule);
 		}
-		iter.ruleList = g_list_next(iter.ruleList);
 	}
 	iter.remainder = g_list_length(matching_rules);
 	g_list_foreach (matching_rules, qof_book_merge_rule_cb, &iter);



More information about the gnucash-changes mailing list