gnucash maint: Avoid passing invalid arguments to functions to get rid of some non-fatal asserts.
Mike Alexander
mta at code.gnucash.org
Mon Aug 10 03:15:01 EDT 2015
Updated via https://github.com/Gnucash/gnucash/commit/054e6f7a (commit)
from https://github.com/Gnucash/gnucash/commit/05fdefa3 (commit)
commit 054e6f7a2284d58c66eb08fbd76694248e78b70e
Author: Mike Alexander <mta at umich.edu>
Date: Thu Aug 6 17:43:57 2015 -0400
Avoid passing invalid arguments to functions to get rid of some non-fatal asserts.
diff --git a/src/app-utils/gnc-sx-instance-model.c b/src/app-utils/gnc-sx-instance-model.c
index 2b3975d..560fe79 100644
--- a/src/app-utils/gnc-sx-instance-model.c
+++ b/src/app-utils/gnc-sx-instance-model.c
@@ -730,7 +730,8 @@ _find_unreferenced_vars(gchar *key,
gpointer value,
HashListPair *cb_pair)
{
- if (!g_hash_table_lookup_extended(cb_pair->hash, key, NULL, NULL))
+ if (cb_pair->hash == NULL ||
+ !g_hash_table_lookup_extended(cb_pair->hash, key, NULL, NULL))
{
g_debug("variable [%s] not found", key);
cb_pair->list = g_list_append(cb_pair->list, key);
@@ -804,20 +805,27 @@ gnc_sx_instance_model_update_sx_instances(GncSxInstanceModel *model, SchedXactio
// handle variables
{
- HashListPair removed_cb_data, added_cb_data;
GList *removed_var_names = NULL, *added_var_names = NULL;
GList *inst_iter = NULL;
- removed_cb_data.hash = new_instances->variable_names;
- removed_cb_data.list = NULL;
- g_hash_table_foreach(existing->variable_names, (GHFunc)_find_unreferenced_vars, &removed_cb_data);
- removed_var_names = removed_cb_data.list;
+ if (existing->variable_names != NULL)
+ {
+ HashListPair removed_cb_data;
+ removed_cb_data.hash = new_instances->variable_names;
+ removed_cb_data.list = NULL;
+ g_hash_table_foreach(existing->variable_names, (GHFunc)_find_unreferenced_vars, &removed_cb_data);
+ removed_var_names = removed_cb_data.list;
+ }
g_debug("%d removed variables", g_list_length(removed_var_names));
- added_cb_data.hash = existing->variable_names;
- added_cb_data.list = NULL;
- g_hash_table_foreach(new_instances->variable_names, (GHFunc)_find_unreferenced_vars, &added_cb_data);
- added_var_names = added_cb_data.list;
+ if (new_instances->variable_names != NULL)
+ {
+ HashListPair added_cb_data;
+ added_cb_data.hash = existing->variable_names;
+ added_cb_data.list = NULL;
+ g_hash_table_foreach(new_instances->variable_names, (GHFunc)_find_unreferenced_vars, &added_cb_data);
+ added_var_names = added_cb_data.list;
+ }
g_debug("%d added variables", g_list_length(added_var_names));
if (existing->variable_names != NULL)
diff --git a/src/engine/SchedXaction.c b/src/engine/SchedXaction.c
index 62bf445..d4d8232 100644
--- a/src/engine/SchedXaction.c
+++ b/src/engine/SchedXaction.c
@@ -633,7 +633,8 @@ xaccSchedXactionSetEndDate( SchedXaction *sx, const GDate *newEnd )
* the SX is to run "forever". See gnc_sxed_save_sx() and
* schedXact_editor_populate() in dialog-sx-editor.c.
*/
- if (newEnd == NULL || g_date_compare( newEnd, &sx->start_date ) < 0 )
+ if (newEnd == NULL ||
+ (g_date_valid(newEnd) && g_date_compare( newEnd, &sx->start_date ) < 0 ))
{
/* XXX: I reject the bad data - is this the right
* thing to do <rgmerk>.
Summary of changes:
src/app-utils/gnc-sx-instance-model.c | 28 ++++++++++++++++++----------
src/engine/SchedXaction.c | 3 ++-
2 files changed, 20 insertions(+), 11 deletions(-)
More information about the gnucash-changes
mailing list