[Split.c] don't cache char*

This commit is contained in:
Christopher Lam
2023-03-01 19:49:04 +08:00
parent 855e45559a
commit 57fcaabd8f

View File

@@ -97,7 +97,6 @@ enum
};
static const char * is_unset = "unset";
static const char * split_type_normal = "normal";
static const char * split_type_stock_split = "stock-split";
@@ -120,7 +119,6 @@ gnc_split_init(Split* split)
split->value = gnc_numeric_zero();
split->date_reconciled = 0;
split->split_type = is_unset;
split->balance = gnc_numeric_zero();
split->cleared_balance = gnc_numeric_zero();
@@ -721,7 +719,6 @@ xaccFreeSplit (Split *split)
split->lot = NULL;
split->acc = NULL;
split->orig_acc = NULL;
split->split_type = NULL;
split->date_reconciled = 0;
G_OBJECT_CLASS (QOF_INSTANCE_GET_CLASS (&split->inst))->dispose(G_OBJECT (split));
@@ -1969,25 +1966,24 @@ const char *
xaccSplitGetType(const Split *s)
{
if (!s) return NULL;
if (s->split_type == is_unset)
GValue v = G_VALUE_INIT;
Split *split = (Split*) s;
const char* type;
qof_instance_get_kvp (QOF_INSTANCE (s), &v, 1, "split-type");
type = G_VALUE_HOLDS_STRING (&v) ? g_value_get_string (&v) : NULL;
const char *rv;
if (!type || !g_strcmp0 (type, split_type_normal))
rv = split_type_normal;
else if (!g_strcmp0 (type, split_type_stock_split))
rv = split_type_stock_split;
else
{
GValue v = G_VALUE_INIT;
Split *split = (Split*) s;
const char* type;
qof_instance_get_kvp (QOF_INSTANCE (s), &v, 1, "split-type");
type = G_VALUE_HOLDS_STRING (&v) ? g_value_get_string (&v) : NULL;
if (!type || !g_strcmp0 (type, split_type_normal))
split->split_type = (char*) split_type_normal;
else if (!g_strcmp0 (type, split_type_stock_split))
split->split_type = (char*) split_type_stock_split;
else
{
PERR ("unexpected split-type %s, reset to normal.", type);
split->split_type = split_type_normal;
}
g_value_unset (&v);
PERR ("unexpected split-type %s, reset to normal.", type);
rv = split_type_normal;
}
return s->split_type;
g_value_unset (&v);
return rv;
}
/* reconfigure a split to be a stock split - after this, you shouldn't
@@ -2001,7 +1997,6 @@ xaccSplitMakeStockSplit(Split *s)
s->value = gnc_numeric_zero();
g_value_init (&v, G_TYPE_STRING);
g_value_set_static_string (&v, split_type_stock_split);
s->split_type = split_type_stock_split;
qof_instance_set_kvp (QOF_INSTANCE (s), &v, 1, "split-type");
SET_GAINS_VDIRTY(s);
mark_split(s);