mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Fix crash when there's no TRANS_READ_ONLY_REASON slot.
Unsetting an empty g_value raises a fatal error, causing tests to fail in some environments. g_free() handles NULLs itself, no need to protect it.
This commit is contained in:
parent
b2d99615ab
commit
a19dcc7bd4
@ -813,8 +813,7 @@ xaccFreeTransaction (Transaction *trans)
|
|||||||
/* free up transaction strings */
|
/* free up transaction strings */
|
||||||
CACHE_REMOVE(trans->num);
|
CACHE_REMOVE(trans->num);
|
||||||
CACHE_REMOVE(trans->description);
|
CACHE_REMOVE(trans->description);
|
||||||
if (trans->readonly_reason)
|
g_free (trans->readonly_reason);
|
||||||
g_free (trans->readonly_reason);
|
|
||||||
|
|
||||||
/* Just in case someone looks up freed memory ... */
|
/* Just in case someone looks up freed memory ... */
|
||||||
trans->num = (char *) 1;
|
trans->num = (char *) 1;
|
||||||
@ -2076,8 +2075,7 @@ void xaccTransClearReadOnly (Transaction *trans)
|
|||||||
qof_instance_set_dirty(QOF_INSTANCE(trans));
|
qof_instance_set_dirty(QOF_INSTANCE(trans));
|
||||||
xaccTransCommitEdit(trans);
|
xaccTransCommitEdit(trans);
|
||||||
|
|
||||||
if (trans->readonly_reason)
|
g_free (trans->readonly_reason);
|
||||||
g_free (trans->readonly_reason);
|
|
||||||
trans->readonly_reason = NULL;
|
trans->readonly_reason = NULL;
|
||||||
trans->reason_cache_valid = TRUE;
|
trans->reason_cache_valid = TRUE;
|
||||||
}
|
}
|
||||||
@ -2096,8 +2094,7 @@ xaccTransSetReadOnly (Transaction *trans, const char *reason)
|
|||||||
qof_instance_set_dirty(QOF_INSTANCE(trans));
|
qof_instance_set_dirty(QOF_INSTANCE(trans));
|
||||||
xaccTransCommitEdit(trans);
|
xaccTransCommitEdit(trans);
|
||||||
|
|
||||||
if (trans->readonly_reason)
|
g_free (trans->readonly_reason);
|
||||||
g_free (trans->readonly_reason);
|
|
||||||
trans->readonly_reason = g_strdup (reason);
|
trans->readonly_reason = g_strdup (reason);
|
||||||
trans->reason_cache_valid = TRUE;
|
trans->reason_cache_valid = TRUE;
|
||||||
}
|
}
|
||||||
@ -2467,15 +2464,16 @@ xaccTransGetReadOnly (Transaction *trans)
|
|||||||
qof_instance_get_kvp (QOF_INSTANCE(trans), &v, 1, TRANS_READ_ONLY_REASON);
|
qof_instance_get_kvp (QOF_INSTANCE(trans), &v, 1, TRANS_READ_ONLY_REASON);
|
||||||
|
|
||||||
/* Clear possible old cache value first */
|
/* Clear possible old cache value first */
|
||||||
if (trans->readonly_reason)
|
g_free (trans->readonly_reason);
|
||||||
g_free (trans->readonly_reason);
|
|
||||||
trans->readonly_reason = NULL;
|
trans->readonly_reason = NULL;
|
||||||
|
|
||||||
/* Then set the new one */
|
/* Then set the new one */
|
||||||
if (G_VALUE_HOLDS_STRING (&v))
|
if (G_VALUE_HOLDS_STRING (&v))
|
||||||
|
{
|
||||||
trans->readonly_reason = g_value_dup_string (&v);
|
trans->readonly_reason = g_value_dup_string (&v);
|
||||||
g_value_unset (&v);
|
g_value_unset (&v);
|
||||||
trans->reason_cache_valid = TRUE;
|
trans->reason_cache_valid = TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return trans->readonly_reason;
|
return trans->readonly_reason;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user