diff --git a/src/backend/sql/gnc-transaction-sql.c b/src/backend/sql/gnc-transaction-sql.c index eca64cfdda..d563b5592e 100644 --- a/src/backend/sql/gnc-transaction-sql.c +++ b/src/backend/sql/gnc-transaction-sql.c @@ -588,7 +588,7 @@ commit_split( GncSqlBackend* be, QofInstance* inst ) op = OP_DB_UPDATE; } is_ok = gnc_sql_do_db_operation( be, op, SPLIT_TABLE, GNC_ID_SPLIT, inst, split_col_table ); - if ( is_ok ) + if ( is_ok && !qof_instance_get_destroying (inst)) { is_ok = gnc_sql_slots_save( be, qof_instance_get_guid( inst ), diff --git a/src/engine/Split.c b/src/engine/Split.c index ad74c13dba..892dc64f18 100644 --- a/src/engine/Split.c +++ b/src/engine/Split.c @@ -530,6 +530,9 @@ xaccFreeSplit (Split *split) split->date_reconciled.tv_sec = 0; split->date_reconciled.tv_nsec = 0; + if (split->inst.kvp_data) + kvp_frame_delete(split->inst.kvp_data); + split->inst.kvp_data = NULL; // Is this right? if (split->gains_split) split->gains_split->gains_split = NULL;