mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Bug 739584 - gnucash-2.6.4 segfaults regularly on transfer .
Ensure that xferData is nulled after free and that client functions check for the NULL.
This commit is contained in:
parent
a537ff052b
commit
745ff9e519
@ -184,6 +184,7 @@ static gnc_numeric
|
|||||||
gnc_xfer_dialog_compute_price (XferDialog *xferData)
|
gnc_xfer_dialog_compute_price (XferDialog *xferData)
|
||||||
{
|
{
|
||||||
gnc_numeric from_amt, to_amt;
|
gnc_numeric from_amt, to_amt;
|
||||||
|
g_return_val_if_fail (xferData != NULL, gnc_numeric_error (GNC_ERROR_ARG));
|
||||||
|
|
||||||
from_amt = gnc_amount_edit_get_amount(GNC_AMOUNT_EDIT(xferData->amount_edit));
|
from_amt = gnc_amount_edit_get_amount(GNC_AMOUNT_EDIT(xferData->amount_edit));
|
||||||
to_amt = gnc_amount_edit_get_amount(GNC_AMOUNT_EDIT(xferData->to_amount_edit));
|
to_amt = gnc_amount_edit_get_amount(GNC_AMOUNT_EDIT(xferData->to_amount_edit));
|
||||||
@ -353,6 +354,7 @@ gnc_xfer_dialog_curr_acct_activate(XferDialog *xferData)
|
|||||||
Account *from_account;
|
Account *from_account;
|
||||||
gboolean curr_active;
|
gboolean curr_active;
|
||||||
|
|
||||||
|
g_return_if_fail (xferData != NULL);
|
||||||
from_account =
|
from_account =
|
||||||
gnc_transfer_dialog_get_selected_account (xferData, XFER_DIALOG_FROM);
|
gnc_transfer_dialog_get_selected_account (xferData, XFER_DIALOG_FROM);
|
||||||
|
|
||||||
@ -395,6 +397,7 @@ void
|
|||||||
price_amount_radio_toggled_cb(GtkToggleButton *togglebutton, gpointer data)
|
price_amount_radio_toggled_cb(GtkToggleButton *togglebutton, gpointer data)
|
||||||
{
|
{
|
||||||
XferDialog *xferData = data;
|
XferDialog *xferData = data;
|
||||||
|
g_return_if_fail (xferData != NULL);
|
||||||
|
|
||||||
gtk_widget_set_sensitive(xferData->price_edit, gtk_toggle_button_get_active
|
gtk_widget_set_sensitive(xferData->price_edit, gtk_toggle_button_get_active
|
||||||
(GTK_TOGGLE_BUTTON(xferData->price_radio)));
|
(GTK_TOGGLE_BUTTON(xferData->price_radio)));
|
||||||
@ -536,6 +539,7 @@ gnc_xfer_dialog_fill_tree_view(XferDialog *xferData,
|
|||||||
AccountTreeFilterInfo *info;
|
AccountTreeFilterInfo *info;
|
||||||
GtkBuilder *builder = g_object_get_data (G_OBJECT (xferData->dialog), "builder");
|
GtkBuilder *builder = g_object_get_data (G_OBJECT (xferData->dialog), "builder");
|
||||||
|
|
||||||
|
g_return_if_fail (xferData != NULL);
|
||||||
use_accounting_labels = gnc_prefs_get_bool(GNC_PREFS_GROUP_GENERAL,
|
use_accounting_labels = gnc_prefs_get_bool(GNC_PREFS_GROUP_GENERAL,
|
||||||
GNC_PREF_ACCOUNTING_LABELS);
|
GNC_PREF_ACCOUNTING_LABELS);
|
||||||
|
|
||||||
@ -620,6 +624,7 @@ static void
|
|||||||
gnc_parse_error_dialog (XferDialog *xferData, const char *error_string)
|
gnc_parse_error_dialog (XferDialog *xferData, const char *error_string)
|
||||||
{
|
{
|
||||||
const char * parse_error_string;
|
const char * parse_error_string;
|
||||||
|
g_return_if_fail (xferData != NULL);
|
||||||
|
|
||||||
parse_error_string = gnc_exp_parser_error_string ();
|
parse_error_string = gnc_exp_parser_error_string ();
|
||||||
if (parse_error_string == NULL)
|
if (parse_error_string == NULL)
|
||||||
@ -777,6 +782,8 @@ gnc_xfer_description_insert_cb(GtkEditable *editable,
|
|||||||
const gchar *match_str;
|
const gchar *match_str;
|
||||||
gint prefix_len, new_text_len, match_str_len;
|
gint prefix_len, new_text_len, match_str_len;
|
||||||
|
|
||||||
|
g_return_if_fail (xferData != NULL);
|
||||||
|
|
||||||
if (insert_text_len <= 0)
|
if (insert_text_len <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -918,6 +925,7 @@ gnc_xfer_amount_update_cb(GtkWidget *widget, GdkEventFocus *event,
|
|||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
XferDialog * xferData = data;
|
XferDialog * xferData = data;
|
||||||
|
g_return_val_if_fail (xferData != NULL, FALSE);
|
||||||
|
|
||||||
gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT (xferData->amount_edit));
|
gnc_amount_edit_evaluate (GNC_AMOUNT_EDIT (xferData->amount_edit));
|
||||||
|
|
||||||
@ -1363,6 +1371,7 @@ gnc_xfer_dialog_response_cb (GtkDialog *dialog, gint response, gpointer data)
|
|||||||
Split *from_split;
|
Split *from_split;
|
||||||
Split *to_split;
|
Split *to_split;
|
||||||
|
|
||||||
|
g_return_if_fail (xferData != NULL);
|
||||||
ENTER(" ");
|
ENTER(" ");
|
||||||
|
|
||||||
if (response == GTK_RESPONSE_APPLY)
|
if (response == GTK_RESPONSE_APPLY)
|
||||||
@ -1695,6 +1704,7 @@ gnc_xfer_dialog_close_cb(GtkDialog *dialog, gpointer data)
|
|||||||
g_source_remove (xferData->desc_selection_source_id);
|
g_source_remove (xferData->desc_selection_source_id);
|
||||||
|
|
||||||
g_free(xferData);
|
g_free(xferData);
|
||||||
|
xferData = NULL;
|
||||||
|
|
||||||
DEBUG("xfer dialog destroyed");
|
DEBUG("xfer dialog destroyed");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user