gnucash master: Bug 769576 - Seg Fault on Editing Scheduled Transaction's Amount
John Ralls
jralls at code.gnucash.org
Sat Aug 6 20:41:16 EDT 2016
Updated via https://github.com/Gnucash/gnucash/commit/77bac2c2 (commit)
from https://github.com/Gnucash/gnucash/commit/31d13bee (commit)
commit 77bac2c2fff38d1525c53fc630f1dff98c7ef067
Author: John Ralls <jralls at ceridwen.us>
Date: Sat Aug 6 17:37:32 2016 -0700
Bug 769576 - Seg Fault on Editing Scheduled Transaction's Amount
The problem being that GValue takes gnc-numerics as boxed values so
qof_object_set needs a gnc-numeric* and qof_object_get a gnc-numeric**.
diff --git a/src/register/ledger-core/split-register-model-save.c b/src/register/ledger-core/split-register-model-save.c
index b90b565..a923c4a 100644
--- a/src/register/ledger-core/split-register-model-save.c
+++ b/src/register/ledger-core/split-register-model-save.c
@@ -712,7 +712,7 @@ gnc_template_register_save_debcred_cell (BasicCell * cell,
/* amountStr = gnc_numeric_to_string (new_amount); */
formula = gnc_table_layout_get_cell_value (reg->table->layout, FCRED_CELL);
- /* If the value can be parsed into a numeric result (without any
+ /* If the value can be parsed into a numeric result (without any
* further variable definitions), store that numeric value
* additionally in the kvp. Otherwise store a zero numeric
* there.*/
@@ -725,11 +725,15 @@ gnc_template_register_save_debcred_cell (BasicCell * cell,
amount = gnc_numeric_zero();
}
qof_instance_set (QOF_INSTANCE (sd->split),
- "sx-credit-numeric", amount,
+ "sx-credit-formula", formula,
+ "sx-credit-numeric", &amount,
NULL);
}
else
{
+ qof_instance_set (QOF_INSTANCE (sd->split),
+ "sx-credit-formula", formula,
+ NULL);
g_hash_table_destroy(parser_vars);
parser_vars = g_hash_table_new (g_str_hash, g_str_equal);
}
@@ -746,11 +750,15 @@ gnc_template_register_save_debcred_cell (BasicCell * cell,
amount = gnc_numeric_zero();
}
qof_instance_set (QOF_INSTANCE (sd->split),
- "sx-debit-numeric", amount,
+ "sx-debit-formula", formula,
+ "sx-debit-numeric", &amount,
NULL);
}
else
{
+ qof_instance_set (QOF_INSTANCE (sd->split),
+ "sx-debit-formula", formula,
+ NULL);
g_hash_table_destroy(parser_vars);
parser_vars = NULL;
}
diff --git a/src/register/ledger-core/split-register-model.c b/src/register/ledger-core/split-register-model.c
index 202958e..15e3847 100644
--- a/src/register/ledger-core/split-register-model.c
+++ b/src/register/ledger-core/split-register-model.c
@@ -2177,7 +2177,7 @@ gnc_template_register_get_debcred_entry (VirtualLocation virt_loc,
{
SplitRegister *reg = user_data;
Split *split;
- gnc_numeric amount;
+ gnc_numeric *amount;
const char * cell_name;
split = gnc_split_register_get_split (reg, virt_loc.vcell_loc);
@@ -2196,11 +2196,11 @@ gnc_template_register_get_debcred_entry (VirtualLocation virt_loc,
qof_instance_get (QOF_INSTANCE (split),
"sx-credit-numeric", &amount,
NULL);
- if (gnc_numeric_zero_p (amount))
+ if (gnc_numeric_zero_p (*amount))
return "";
- amount = gnc_numeric_abs (amount);
- return xaccPrintAmount (amount, gnc_default_print_info (FALSE));
+ *amount = gnc_numeric_abs (*amount);
+ return xaccPrintAmount (*amount, gnc_default_print_info (FALSE));
}
static void
Summary of changes:
src/register/ledger-core/split-register-model-save.c | 14 +++++++++++---
src/register/ledger-core/split-register-model.c | 8 ++++----
2 files changed, 15 insertions(+), 7 deletions(-)
More information about the gnucash-changes
mailing list