[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