diff --git a/ChangeLog b/ChangeLog index f44d94970e..6bd2fe1eb1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-12-11 Derek Atkins + + * src/gnome/reconcile-list.c: make sure to verify that the items + in the reconcile hash are still around after a refresh. Fixes + bug #129121. + 2003-12-08 Derek Atkins * src/engine/gnc-numeric.c: Rich Johnson's patch to convert diff --git a/src/gnome/reconcile-list.c b/src/gnome/reconcile-list.c index 475f3edd70..96d490d664 100644 --- a/src/gnome/reconcile-list.c +++ b/src/gnome/reconcile-list.c @@ -461,6 +461,16 @@ gnc_reconcile_list_is_reconciled(gpointer item, gpointer user_data) return GINT_TO_POINTER(current != NULL); } +static void +grl_refresh_helper (gpointer key, gpointer value, gpointer user_data) +{ + GNCReconcileList *list = user_data; + GNCQueryList *qlist = GNC_QUERY_LIST(list); + + if (!gnc_query_list_item_in_list(qlist, key)) + g_hash_table_remove(list->reconciled, key); +} + /********************************************************************\ * gnc_reconcile_list_refresh * * refreshes the list * @@ -478,6 +488,10 @@ gnc_reconcile_list_refresh (GNCReconcileList *list) qlist = GNC_QUERY_LIST(list); gnc_query_list_refresh(qlist); + + /* Now verify that everything in the reconcile hash is still in qlist */ + if (list->reconciled) + g_hash_table_foreach(list->reconciled, grl_refresh_helper, list); }