From 6b49b3ba4c37edad651e42755ec8b5f64fc1d8bc Mon Sep 17 00:00:00 2001 From: John Ralls Date: Tue, 30 Jan 2018 14:33:02 -0800 Subject: [PATCH] Bug 792763 - deleting a transaction can cause a SIGSEGV Prevent a NULL transaction from crashing xaccTransCountSplits and prevent gnc_plugin_business_update_menus from calling it with a NULL transaction. --- gnucash/gnome/gnc-plugin-business.c | 2 +- libgnucash/engine/Transaction.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/gnucash/gnome/gnc-plugin-business.c b/gnucash/gnome/gnc-plugin-business.c index 121bd4852f..e1b6d57148 100644 --- a/gnucash/gnome/gnc-plugin-business.c +++ b/gnucash/gnome/gnc-plugin-business.c @@ -923,7 +923,7 @@ gnc_plugin_business_update_menus (GncPluginPage *plugin_page) if (is_txn_register) { Transaction *trans = gnc_plugin_page_register_get_current_txn (GNC_PLUGIN_PAGE_REGISTER(plugin_page)); - if (xaccTransCountSplits(trans) > 0) + if (trans && xaccTransCountSplits(trans) > 0) is_bus_txn = (xaccTransGetFirstAPARAcctSplit(trans, TRUE) != NULL); is_bus_doc = (xaccTransGetTxnType (trans) == TXN_TYPE_INVOICE); } diff --git a/libgnucash/engine/Transaction.c b/libgnucash/engine/Transaction.c index 755acae354..1598ecba2c 100644 --- a/libgnucash/engine/Transaction.c +++ b/libgnucash/engine/Transaction.c @@ -2292,6 +2292,7 @@ int xaccTransCountSplits (const Transaction *trans) { gint i = 0; + g_return_val_if_fail (trans != NULL, 0); FOR_EACH_SPLIT(trans, i++); return i; }