Bug fixes in the Query code and transaction traversal code.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@2269 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Dave Peticolas
2000-05-07 05:56:37 +00:00
parent 727a2e1ab5
commit 95ab8965d0
3 changed files with 29 additions and 18 deletions

View File

@@ -1,5 +1,13 @@
2000-05-06 Dave Peticolas <peticola@cs.ucdavis.edu>
* src/engine/Query.c: g_list_sort *returns* the new first node.
* src/engine/Group.c
(xaccAccountsBeginStagedTransactionTraversals): bug fix -- used wrong
pointer type.
(xaccSplitsBeginStagedTransactionTraversals): bug fix -- used wrong
pointer type.
* src/gnome/reconcile-list.c (gnc_reconcile_list_fill): print the
amount using the account's currency.

View File

@@ -930,7 +930,7 @@ xaccGroupGetDepth (AccountGroup *grp)
int i, depth=0, maxdepth=0;
if (!grp) return 0;
for (i=0; i<grp->numAcc; i++) {
for (i=0; i < grp->numAcc; i++) {
depth = xaccGroupGetDepth (grp->account[i]->children);
if (depth > maxdepth) maxdepth = depth;
}
@@ -946,12 +946,12 @@ void
xaccSplitsBeginStagedTransactionTraversals (Split **splits)
{
Transaction *trans;
Split *split;
Split **sptr;
if (splits == NULL) return;
for (split = *splits; split != NULL; split++) {
trans = split->parent;
for (sptr = splits; *sptr != NULL; sptr++) {
trans = (*sptr)->parent;
if (trans != NULL)
trans->marker = 0;
}
@@ -968,12 +968,12 @@ xaccAccountBeginStagedTransactionTraversals (Account *account)
void
xaccAccountsBeginStagedTransactionTraversals (Account **accounts)
{
Account *account;
Account **aptr;
if (accounts == NULL) return;
for (account = *accounts; account != NULL; account++)
xaccAccountBeginStagedTransactionTraversals(account);
for (aptr = accounts; *aptr != NULL; aptr++)
xaccAccountBeginStagedTransactionTraversals(*aptr);
}
gncBoolean
@@ -1011,6 +1011,7 @@ xaccGroupBeginStagedTransactionTraversals (AccountGroup *grp)
unsigned int n = 0;
Account *acc;
Split *s = NULL;
acc = xaccGroupGetAccount(grp, i);
if (!acc) return;
@@ -1045,6 +1046,7 @@ xaccAccountStagedTransactionTraversal (Account *acc,
int retval;
while (s) {
Transaction *trans = s->parent;
if (trans && (trans->marker < stage)) {
trans->marker = stage;
retval = callback(trans, cb_data);
@@ -1056,6 +1058,7 @@ xaccAccountStagedTransactionTraversal (Account *acc,
} else {
while (s) {
Transaction *trans = s->parent;
if (trans && (trans->marker < stage)) {
trans->marker = stage;
}

View File

@@ -424,16 +424,16 @@ split_cmp_func(sort_type_t how, gconstpointer ga, gconstpointer gb) {
char *da, *db;
double fa, fb;
if(sa && !sb) return -1;
if(!sa && sb) return 1;
if(!sa && !sb) return 0;
if (sa && !sb) return -1;
if (!sa && sb) return 1;
if (!sa && !sb) return 0;
ta = sa->parent;
tb = sb->parent;
if (ta->orig) ta = ta->orig;
if (tb->orig) tb = tb->orig;
if ( (ta) && !(tb) ) return -1;
if ( !(ta) && (tb) ) return +1;
if ( !(ta) && !(tb) ) return 0;
@@ -521,7 +521,7 @@ split_cmp_func(sort_type_t how, gconstpointer ga, gconstpointer gb) {
return 0;
}
return strcmp (da, db);
break;
case BY_MEMO:
@@ -562,7 +562,7 @@ split_cmp_func(sort_type_t how, gconstpointer ga, gconstpointer gb) {
return 0;
}
break;
case BY_AMOUNT:
fa = (sa->damount) * (sa->share_price);
fb = (sb->damount) * (sb->share_price);
@@ -590,7 +590,7 @@ split_sort_func(gconstpointer a, gconstpointer b) {
int retval;
assert(split_sort_query);
retval = split_cmp_func(split_sort_query->primary_sort, a, b);
if((retval == 0) &&
(split_sort_query->secondary_sort != BY_NONE)) {
@@ -653,14 +653,14 @@ xaccQueryGetSplits(Query * q) {
Split ** splits;
Split ** sptr;
QueryTerm * qt;
int total_splits_checked = 0;
int split_count = 0;
int acct_ok;
int posn;
struct timeval start, end;
gettimeofday(&start, NULL);
/* tmp hack alert */
@@ -729,7 +729,7 @@ xaccQueryGetSplits(Query * q) {
* split_sort_query is an unforgivable use of static global data...
* I just can't figure out how else to do this sanely. */
split_sort_query = q;
g_list_sort(matching_splits, split_sort_func);
matching_splits = g_list_sort(matching_splits, split_sort_func);
/* crop the list to limit the number of splits */
if((split_count > q->max_splits) && (q->max_splits > -1)) {
@@ -740,7 +740,7 @@ xaccQueryGetSplits(Query * q) {
}
split_count = q->max_splits;
}
/* convert the g_list into a split array. */
splits = g_new0(Split *, split_count+1);
posn = 0;