mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-20 11:48:30 -06:00
Bug 799423 - Crash when creating ETF transaction
Don't keep the old split if it's a trading split. The balance code regenerates those, invalidating the pointer.
This commit is contained in:
parent
711554ecd5
commit
5c5b627cb1
@ -364,6 +364,12 @@ gnc_split_register_check_account (SplitRegister *reg,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
is_trading_split (Split* split)
|
||||
{
|
||||
return xaccAccountGetType (xaccSplitGetAccount (split)) == ACCT_TYPE_TRADING;
|
||||
}
|
||||
|
||||
static void
|
||||
gnc_split_register_move_cursor (VirtualLocation *p_new_virt_loc,
|
||||
gpointer user_data)
|
||||
@ -374,10 +380,10 @@ gnc_split_register_move_cursor (VirtualLocation *p_new_virt_loc,
|
||||
Transaction *pending_trans;
|
||||
Transaction *new_trans;
|
||||
Transaction *old_trans;
|
||||
Split *old_trans_split;
|
||||
Split *old_trans_split{nullptr};
|
||||
Split *new_trans_split;
|
||||
Split *new_split;
|
||||
Split *old_split;
|
||||
Split *old_split{nullptr};
|
||||
CursorClass new_class;
|
||||
CursorClass old_class;
|
||||
gboolean exact_traversal;
|
||||
@ -399,10 +405,13 @@ gnc_split_register_move_cursor (VirtualLocation *p_new_virt_loc,
|
||||
info = gnc_split_register_get_info (reg);
|
||||
|
||||
/* The transaction we are coming from */
|
||||
old_split = gnc_split_register_get_current_split (reg);
|
||||
if (auto s{gnc_split_register_get_current_split (reg)}; !is_trading_split(s))
|
||||
old_split = s;
|
||||
old_trans = gnc_split_register_get_current_trans (reg);
|
||||
old_trans_split =
|
||||
gnc_split_register_get_current_trans_split (reg, &old_trans_split_loc);
|
||||
if (auto s{gnc_split_register_get_current_trans_split (reg, &old_trans_split_loc)};
|
||||
is_trading_split(s))
|
||||
old_trans_split = s;
|
||||
|
||||
old_class = gnc_split_register_get_current_cursor_class (reg);
|
||||
|
||||
exact_traversal = info->exact_traversal;
|
||||
|
Loading…
Reference in New Issue
Block a user