gnucash master: Multiple changes pushed
John Ralls
jralls at code.gnucash.org
Mon Feb 27 19:31:07 EST 2023
Updated via https://github.com/Gnucash/gnucash/commit/3d5e2798 (commit)
via https://github.com/Gnucash/gnucash/commit/7f0353ad (commit)
via https://github.com/Gnucash/gnucash/commit/8a7c5392 (commit)
via https://github.com/Gnucash/gnucash/commit/ddc3f288 (commit)
via https://github.com/Gnucash/gnucash/commit/de9c0eb5 (commit)
via https://github.com/Gnucash/gnucash/commit/f483d758 (commit)
via https://github.com/Gnucash/gnucash/commit/6616ce10 (commit)
via https://github.com/Gnucash/gnucash/commit/47b85d3b (commit)
from https://github.com/Gnucash/gnucash/commit/ba12e312 (commit)
commit 3d5e27982f4d087936c7232e10fa59720ad20504
Merge: ba12e3125 7f0353adc
Author: John Ralls <jralls at ceridwen.us>
Date: Mon Feb 27 16:24:44 2023 -0800
Merge branch 'maint'
diff --cc po/hu.po
index 2ec7d2374,450af2c7f..09fbf9e51
--- a/po/hu.po
+++ b/po/hu.po
@@@ -14,10 -14,10 +14,10 @@@ msgstr "
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2022-12-04 19:47-0800\n"
- "PO-Revision-Date: 2023-02-23 16:38+0000\n"
- "Last-Translator: Szia Tomi <sziatomi01 at gmail.com>\n"
+ "PO-Revision-Date: 2023-02-26 20:44+0000\n"
+ "Last-Translator: mocsa <csaba at feltoltve.hu>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/gnucash/"
-"gnucash/hu/>\n"
+"program-beta/hu/>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
commit 7f0353adc4b0dc73586bdf056dc5a97eda2599f9
Author: John Ralls <jralls at ceridwen.us>
Date: Mon Feb 27 16:09:27 2023 -0800
Fix a missed g_value_dup_string and some no longer used variables.
diff --git a/libgnucash/engine/Transaction.c b/libgnucash/engine/Transaction.c
index 987706f74..1a77c4146 100644
--- a/libgnucash/engine/Transaction.c
+++ b/libgnucash/engine/Transaction.c
@@ -2385,7 +2385,6 @@ xaccTransGetDocLink (const Transaction *trans)
g_return_val_if_fail (trans, NULL);
GValue v = G_VALUE_INIT;
- Transaction *t = (Transaction*) trans;
qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, doclink_uri_str);
const char* doclink = G_VALUE_HOLDS_STRING (&v) ? g_value_get_string (&v) : NULL;
g_value_unset (&v);
@@ -2399,9 +2398,8 @@ xaccTransGetNotes (const Transaction *trans)
g_return_val_if_fail (trans, NULL);
GValue v = G_VALUE_INIT;
- Transaction *t = (Transaction*) trans;
qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, trans_notes_str);
- const char *notes = G_VALUE_HOLDS_STRING (&v) ? g_value_dup_string (&v) : NULL;
+ const char *notes = G_VALUE_HOLDS_STRING (&v) ? g_value_get_string (&v) : NULL;
g_value_unset (&v);
return notes;
@@ -2412,7 +2410,6 @@ xaccTransGetIsClosingTxn (const Transaction *trans)
{
if (!trans) return FALSE;
- Transaction* trans_nonconst = (Transaction*) trans;
GValue v = G_VALUE_INIT;
gboolean rv;
qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, trans_is_closing_str);
diff --git a/libgnucash/engine/kvp-frame.cpp b/libgnucash/engine/kvp-frame.cpp
index c21370d05..48d300b4e 100644
--- a/libgnucash/engine/kvp-frame.cpp
+++ b/libgnucash/engine/kvp-frame.cpp
@@ -238,17 +238,6 @@ int compare(const KvpFrameImpl & one, const KvpFrameImpl & two) noexcept
return 0;
}
-
-static void
-gvalue_list_from_kvp_value (KvpValue *kval, gpointer pList)
-{
- GList **gvlist = NULL;
- GValue *gval = gvalue_from_kvp_value (kval);
- gvlist = (GList**)pList;
- if (G_VALUE_TYPE (gval))
- *gvlist = g_list_prepend (*gvlist, gval);
-}
-
static void
kvp_value_list_from_gvalue (GValue *gval, gpointer pList)
{
@@ -263,10 +252,6 @@ kvp_value_list_from_gvalue (GValue *gval, gpointer pList)
GValue*
gvalue_from_kvp_value (const KvpValue *kval, GValue* val)
{
- gnc_numeric num;
- Time64 tm;
- GDate gdate;
-
if (kval == NULL) return NULL;
if (!val)
val = g_slice_new0 (GValue);
commit 8a7c53925870501c8f103c8f09961ecba3341c84
Author: John Ralls <jralls at ceridwen.us>
Date: Mon Feb 27 14:54:46 2023 -0800
Bug 798748 - Transaction Notes field's value does not appear in...
reverse transaction.
The proximate cause was that xaccTransBeginEdit put the KVP cache
variable of the new transaction in a state that prevented the value
from being copied. More generally the KVP cache variables didn't
handle any invalidating events.
With the change to GValue usage in qof_instance_get_kvp it's now
a simple memory dereference with no copying except for POD types
so caching is no longer useful. This commit removes caching from
Transaction, eliminating the notes problem.
diff --git a/libgnucash/engine/Transaction.c b/libgnucash/engine/Transaction.c
index 4b1888cc3..987706f74 100644
--- a/libgnucash/engine/Transaction.c
+++ b/libgnucash/engine/Transaction.c
@@ -255,9 +255,6 @@ void gen_event_trans (Transaction *trans)
}
}
-static const char*
-is_unset = "unset";
-
/* GObject Initialization */
G_DEFINE_TYPE(Transaction, gnc_transaction, QOF_TYPE_INSTANCE)
@@ -274,11 +271,6 @@ gnc_transaction_init(Transaction* trans)
trans->date_posted = 0;
trans->marker = 0;
trans->orig = NULL;
- trans->readonly_reason = (char*) is_unset;
- trans->isClosingTxn_cached = -1;
- trans->notes = (char*) is_unset;
- trans->doclink = (char*) is_unset;
- trans->void_reason = (char*) is_unset;
trans->txn_type = TXN_TYPE_UNCACHED;
LEAVE (" ");
}
@@ -821,24 +813,12 @@ xaccFreeTransaction (Transaction *trans)
/* free up transaction strings */
CACHE_REMOVE(trans->num);
CACHE_REMOVE(trans->description);
- if (trans->readonly_reason != is_unset)
- g_free (trans->readonly_reason);
- if (trans->doclink != is_unset)
- g_free (trans->doclink);
- if (trans->void_reason != is_unset)
- g_free (trans->void_reason);
- if (trans->notes != is_unset)
- g_free (trans->notes);
/* Just in case someone looks up freed memory ... */
trans->num = (char *) 1;
trans->description = NULL;
trans->date_entered = 0;
trans->date_posted = 0;
- trans->readonly_reason = NULL;
- trans->doclink = NULL;
- trans->notes = NULL;
- trans->void_reason = NULL;
if (trans->orig)
{
xaccFreeTransaction (trans->orig);
@@ -2047,7 +2027,7 @@ xaccTransSetDatePostedGDate (Transaction *trans, GDate date)
* the future a date which was set as *date* (without time) can
* clearly be distinguished from the time64. */
g_value_init (&v, G_TYPE_DATE);
- g_value_set_boxed (&v, &date);
+ g_value_set_static_boxed (&v, &date);
qof_instance_set_kvp (QOF_INSTANCE(trans), &v, 1, TRANS_DATE_POSTED);
g_value_unset (&v);
/* mark dirty and commit handled by SetDateInternal */
@@ -2105,7 +2085,7 @@ xaccTransSetDateDue (Transaction * trans, time64 time)
GValue v = G_VALUE_INIT;
if (!trans) return;
g_value_init (&v, GNC_TYPE_TIME64);
- g_value_set_boxed (&v, &time);
+ g_value_set_static_boxed (&v, &time);
xaccTransBeginEdit(trans);
qof_instance_set_kvp (QOF_INSTANCE (trans), &v, 1, TRANS_DATE_DUE_KVP);
qof_instance_set_dirty(QOF_INSTANCE(trans));
@@ -2126,7 +2106,7 @@ xaccTransSetTxnType (Transaction *trans, char type)
g_value_unset (&v);
return;
}
- g_value_set_string (&v, s);
+ g_value_set_static_string (&v, s);
xaccTransBeginEdit(trans);
qof_instance_set_kvp (QOF_INSTANCE (trans), &v, 1, TRANS_TXN_TYPE_KVP);
qof_instance_set_dirty(QOF_INSTANCE(trans));
@@ -2142,10 +2122,6 @@ void xaccTransClearReadOnly (Transaction *trans)
qof_instance_set_kvp (QOF_INSTANCE (trans), NULL, 1, TRANS_READ_ONLY_REASON);
qof_instance_set_dirty(QOF_INSTANCE(trans));
xaccTransCommitEdit(trans);
-
- if (trans->readonly_reason != is_unset)
- g_free (trans->readonly_reason);
- trans->readonly_reason = NULL;
}
}
@@ -2156,16 +2132,12 @@ xaccTransSetReadOnly (Transaction *trans, const char *reason)
{
GValue v = G_VALUE_INIT;
g_value_init (&v, G_TYPE_STRING);
- g_value_set_string (&v, reason);
+ g_value_set_static_string (&v, reason);
xaccTransBeginEdit(trans);
qof_instance_set_kvp (QOF_INSTANCE (trans), &v, 1, TRANS_READ_ONLY_REASON);
qof_instance_set_dirty(QOF_INSTANCE(trans));
g_value_unset (&v);
xaccTransCommitEdit(trans);
-
- if (trans->readonly_reason != is_unset)
- g_free (trans->readonly_reason);
- trans->readonly_reason = g_strdup (reason);
}
}
@@ -2218,25 +2190,16 @@ xaccTransSetDocLink (Transaction *trans, const char *doclink)
{
if (!trans || !doclink) return;
- if (trans->doclink != is_unset)
- {
- if (!g_strcmp0 (doclink, trans->doclink))
- return;
-
- g_free (trans->doclink);
- }
xaccTransBeginEdit(trans);
if (doclink[0] == '\0')
{
- trans->doclink = NULL;
qof_instance_set_kvp (QOF_INSTANCE (trans), NULL, 1, doclink_uri_str);
}
else
{
GValue v = G_VALUE_INIT;
- trans->doclink = g_strdup (doclink);
g_value_init (&v, G_TYPE_STRING);
- g_value_set_string (&v, doclink);
+ g_value_set_static_string (&v, doclink); //Gets copied at the other end
qof_instance_set_kvp (QOF_INSTANCE (trans), &v, 1, doclink_uri_str);
g_value_unset (&v);
}
@@ -2257,18 +2220,9 @@ xaccTransSetNotes (Transaction *trans, const char *notes)
{
GValue v = G_VALUE_INIT;
if (!trans || !notes) return;
- if (trans->notes != is_unset)
- {
- if (!g_strcmp0 (notes, trans->notes))
- return;
-
- g_free (trans->notes);
- }
g_value_init (&v, G_TYPE_STRING);
- g_value_set_string (&v, notes);
+ g_value_set_static_string (&v, notes);
xaccTransBeginEdit(trans);
-
- trans->notes = g_strdup (notes);
qof_instance_set_kvp (QOF_INSTANCE (trans), &v, 1, trans_notes_str);
qof_instance_set_dirty(QOF_INSTANCE(trans));
g_value_unset (&v);
@@ -2288,12 +2242,10 @@ xaccTransSetIsClosingTxn (Transaction *trans, gboolean is_closing)
g_value_set_int64 (&v, 1);
qof_instance_set_kvp (QOF_INSTANCE (trans), &v, 1, trans_is_closing_str);
g_value_unset (&v);
- trans->isClosingTxn_cached = 1;
}
else
{
qof_instance_set_kvp (QOF_INSTANCE (trans), NULL, 1, trans_is_closing_str);
- trans->isClosingTxn_cached = 0;
}
qof_instance_set_dirty(QOF_INSTANCE(trans));
xaccTransCommitEdit(trans);
@@ -2431,50 +2383,46 @@ const char *
xaccTransGetDocLink (const Transaction *trans)
{
g_return_val_if_fail (trans, NULL);
- if (trans->doclink == is_unset)
- {
- GValue v = G_VALUE_INIT;
- Transaction *t = (Transaction*) trans;
- qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, doclink_uri_str);
- t->doclink = G_VALUE_HOLDS_STRING (&v) ? g_value_dup_string (&v) : NULL;
- g_value_unset (&v);
- }
- return trans->doclink;
+
+ GValue v = G_VALUE_INIT;
+ Transaction *t = (Transaction*) trans;
+ qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, doclink_uri_str);
+ const char* doclink = G_VALUE_HOLDS_STRING (&v) ? g_value_get_string (&v) : NULL;
+ g_value_unset (&v);
+
+ return doclink;
}
const char *
xaccTransGetNotes (const Transaction *trans)
{
g_return_val_if_fail (trans, NULL);
- if (trans->notes == is_unset)
- {
- GValue v = G_VALUE_INIT;
- Transaction *t = (Transaction*) trans;
- qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, trans_notes_str);
- t->notes = G_VALUE_HOLDS_STRING (&v) ? g_value_dup_string (&v) : NULL;
- g_value_unset (&v);
- }
- return trans->notes;
+
+ GValue v = G_VALUE_INIT;
+ Transaction *t = (Transaction*) trans;
+ qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, trans_notes_str);
+ const char *notes = G_VALUE_HOLDS_STRING (&v) ? g_value_dup_string (&v) : NULL;
+ g_value_unset (&v);
+
+ return notes;
}
gboolean
xaccTransGetIsClosingTxn (const Transaction *trans)
{
if (!trans) return FALSE;
- if (trans->isClosingTxn_cached == -1)
- {
- Transaction* trans_nonconst = (Transaction*) trans;
- GValue v = G_VALUE_INIT;
- qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, trans_is_closing_str);
- if (G_VALUE_HOLDS_INT64 (&v))
- trans_nonconst->isClosingTxn_cached = (g_value_get_int64 (&v) ? 1 : 0);
- else
- trans_nonconst->isClosingTxn_cached = 0;
- g_value_unset (&v);
- }
- return (trans->isClosingTxn_cached == 1)
- ? TRUE
- : FALSE;
+
+ Transaction* trans_nonconst = (Transaction*) trans;
+ GValue v = G_VALUE_INIT;
+ gboolean rv;
+ qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, trans_is_closing_str);
+ if (G_VALUE_HOLDS_INT64 (&v))
+ rv = (g_value_get_int64 (&v) ? 1 : 0);
+ else
+ rv = 0;
+ g_value_unset (&v);
+
+ return rv;
}
/********************************************************************\
@@ -2604,15 +2552,12 @@ xaccTransGetReadOnly (Transaction *trans)
if (!trans)
return NULL;
- if (trans->readonly_reason == is_unset)
- {
- GValue v = G_VALUE_INIT;
- qof_instance_get_kvp (QOF_INSTANCE(trans), &v, 1, TRANS_READ_ONLY_REASON);
- trans->readonly_reason = G_VALUE_HOLDS_STRING (&v) ?
- g_value_dup_string (&v) : NULL;
- g_value_unset (&v);
- }
- return trans->readonly_reason;
+ GValue v = G_VALUE_INIT;
+ qof_instance_get_kvp (QOF_INSTANCE(trans), &v, 1, TRANS_READ_ONLY_REASON);
+ const char *readonly_reason = G_VALUE_HOLDS_STRING (&v) ?
+ g_value_get_string (&v) : NULL;
+ g_value_unset (&v);
+ return readonly_reason;
}
static gboolean
@@ -2810,16 +2755,13 @@ xaccTransVoid(Transaction *trans, const char *reason)
else
g_value_init (&v, G_TYPE_STRING);
- g_value_set_string (&v, _("Voided transaction"));
+ g_value_set_static_string (&v, _("Voided transaction"));
qof_instance_set_kvp (QOF_INSTANCE (trans), &v, 1, trans_notes_str);
- g_value_set_string (&v, reason);
+ g_value_set_static_string (&v, reason);
qof_instance_set_kvp (QOF_INSTANCE (trans), &v, 1, void_reason_str);
- if (trans->void_reason != is_unset)
- g_free (trans->void_reason);
- trans->void_reason = g_strdup (reason);
gnc_time64_to_iso8601_buff (gnc_time(NULL), iso8601_str);
- g_value_set_string (&v, iso8601_str);
+ g_value_set_static_string (&v, iso8601_str);
qof_instance_set_kvp (QOF_INSTANCE (trans), &v, 1, void_time_str);
g_value_unset (&v);
@@ -2841,15 +2783,13 @@ const char *
xaccTransGetVoidReason(const Transaction *trans)
{
g_return_val_if_fail (trans, NULL);
- if (trans->void_reason == is_unset)
- {
- GValue v = G_VALUE_INIT;
- Transaction *t = (Transaction*) trans;
- qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, void_reason_str);
- t->void_reason = G_VALUE_HOLDS_STRING (&v) ? g_value_dup_string (&v) : NULL;
- g_value_unset (&v);
- }
- return trans->void_reason;
+
+ GValue v = G_VALUE_INIT;
+ qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, void_reason_str);
+ const char *void_reason = G_VALUE_HOLDS_STRING (&v) ? g_value_get_string (&v) : NULL;
+ g_value_unset (&v);
+
+ return void_reason;
}
time64
@@ -2889,8 +2829,6 @@ xaccTransUnvoid (Transaction *trans)
qof_instance_set_kvp (QOF_INSTANCE (trans), NULL, 1, void_reason_str);
qof_instance_set_kvp (QOF_INSTANCE (trans), NULL, 1, void_time_str);
g_value_unset (&v);
- g_free (trans->void_reason);
- trans->void_reason = NULL;
FOR_EACH_SPLIT(trans, xaccSplitUnvoid(s));
@@ -2927,7 +2865,7 @@ xaccTransReverse (Transaction *orig)
/* Now update the original with a pointer to the new one */
g_value_init (&v, GNC_TYPE_GUID);
- g_value_set_boxed (&v, xaccTransGetGUID(trans));
+ g_value_set_static_boxed (&v, xaccTransGetGUID(trans));
qof_instance_set_kvp (QOF_INSTANCE (orig), &v, 1, TRANS_REVERSED_BY);
g_value_unset (&v);
diff --git a/libgnucash/engine/TransactionP.h b/libgnucash/engine/TransactionP.h
index 3e107ff39..0a22be0cc 100644
--- a/libgnucash/engine/TransactionP.h
+++ b/libgnucash/engine/TransactionP.h
@@ -111,23 +111,11 @@ struct transaction_s
*/
Transaction *orig;
- /* The readonly_reason is a string that indicates why a transaction
- * is marked as read-only. If NULL, the transaction is read-write.
- * This value is stored in kvp, but we cache a copy here for
- * performance reasons.
+ /* A flag to indicate when a transaction represents an invoice, a payment,
+ * or a link between the two.
*/
- char * readonly_reason;
-
- char * doclink;
- char * void_reason;
- char * notes;
-
char txn_type;
- /* Cached bool value to indicate whether this is a closing txn. This is
- * cached from the KVP value because it is queried a lot. Tri-state value: -1
- * = uninitialized; 0 = FALSE, 1 = TRUE. */
- gint isClosingTxn_cached;
};
struct _TransactionClass
diff --git a/libgnucash/engine/mocks/gmock-Transaction.h b/libgnucash/engine/mocks/gmock-Transaction.h
index ce82437fa..e9dcd53fc 100644
--- a/libgnucash/engine/mocks/gmock-Transaction.h
+++ b/libgnucash/engine/mocks/gmock-Transaction.h
@@ -32,8 +32,6 @@ public:
date_posted = 0;
marker = 0;
orig = nullptr;
- readonly_reason = nullptr;
- isClosingTxn_cached = -1;
}
void* operator new(size_t size)
{
commit ddc3f28899c71579abd9b2bd822baa6b95fc41d6
Author: John Ralls <jralls at ceridwen.us>
Date: Mon Feb 27 13:02:27 2023 -0800
[kvp] Use static strings and boxed in gvalue_from_kvp_value.
Saves allocating and copying complex values, avoiding potential
memory leaks.
diff --git a/libgnucash/engine/kvp-frame.cpp b/libgnucash/engine/kvp-frame.cpp
index 56be042d4..c21370d05 100644
--- a/libgnucash/engine/kvp-frame.cpp
+++ b/libgnucash/engine/kvp-frame.cpp
@@ -261,15 +261,17 @@ kvp_value_list_from_gvalue (GValue *gval, gpointer pList)
}
GValue*
-gvalue_from_kvp_value (const KvpValue *kval)
+gvalue_from_kvp_value (const KvpValue *kval, GValue* val)
{
- GValue *val;
gnc_numeric num;
Time64 tm;
GDate gdate;
if (kval == NULL) return NULL;
- val = g_slice_new0 (GValue);
+ if (!val)
+ val = g_slice_new0 (GValue);
+ else
+ g_value_unset(val);
switch (kval->get_type())
{
@@ -283,36 +285,28 @@ gvalue_from_kvp_value (const KvpValue *kval)
break;
case KvpValue::Type::NUMERIC:
g_value_init (val, GNC_TYPE_NUMERIC);
- num = kval->get<gnc_numeric>();
- g_value_set_boxed (val, &num);
+ g_value_set_static_boxed (val, kval->get_ptr<gnc_numeric>());
break;
case KvpValue::Type::STRING:
g_value_init (val, G_TYPE_STRING);
- g_value_set_string (val, kval->get<const char*>());
+ g_value_set_static_string (val, kval->get<const char*>());
break;
case KvpValue::Type::GUID:
g_value_init (val, GNC_TYPE_GUID);
- g_value_set_boxed (val, kval->get<GncGUID*>());
+ g_value_set_static_boxed (val, kval->get<GncGUID*>());
break;
case KvpValue::Type::TIME64:
g_value_init (val, GNC_TYPE_TIME64);
- tm = kval->get<Time64>();
- g_value_set_boxed (val, &tm);
+ g_value_set_boxed (val, kval->get_ptr<Time64>());
break;
case KvpValue::Type::GDATE:
g_value_init (val, G_TYPE_DATE);
- gdate = kval->get<GDate>();
- g_value_set_boxed (val, &gdate);
+ g_value_set_static_boxed (val, kval->get_ptr<GDate>());
break;
case KvpValue::Type::GLIST:
{
- GList *gvalue_list = NULL;
- GList *kvp_list = kval->get<GList*>();
- g_list_foreach (kvp_list, (GFunc)gvalue_list_from_kvp_value,
- &gvalue_list);
g_value_init (val, GNC_TYPE_VALUE_LIST);
- gvalue_list = g_list_reverse (gvalue_list);
- g_value_set_boxed (val, gvalue_list);
+ g_value_set_static_boxed (val, kval->get<GList*>());
break;
}
/* No transfer of KVP frames outside of QofInstance-derived classes! */
diff --git a/libgnucash/engine/kvp-value.hpp b/libgnucash/engine/kvp-value.hpp
index 61b7dfd99..e7083b2f2 100644
--- a/libgnucash/engine/kvp-value.hpp
+++ b/libgnucash/engine/kvp-value.hpp
@@ -142,6 +142,8 @@ struct KvpValueImpl
template <typename T>
T get() const noexcept;
+ template <typename T>
+ const T* get_ptr() const noexcept;
template <typename T>
void set(T) noexcept;
@@ -178,6 +180,13 @@ KvpValueImpl::get() const noexcept
return boost::get<T>(datastore);
}
+template <typename T> const T*
+KvpValueImpl::get_ptr() const noexcept
+{
+ if (this->datastore.type() != typeid(T)) return nullptr;
+ return boost::get<T>(&datastore);
+}
+
template <typename T> void
KvpValueImpl::set(T val) noexcept
{
@@ -190,7 +199,7 @@ KvpValueImpl::set(T val) noexcept
* @param kval: A KvpValue.
* @return GValue*. Must be freed with g_free().
*/
-GValue* gvalue_from_kvp_value (const KvpValue *kval);
+GValue* gvalue_from_kvp_value (const KvpValue *kval, GValue* val = nullptr);
/** Convert a gvalue into a kvpvalue.
* @param gval: A GValue of a type KvpValue can digest.
diff --git a/libgnucash/engine/qofinstance.cpp b/libgnucash/engine/qofinstance.cpp
index 16b964b7e..97c3063e4 100644
--- a/libgnucash/engine/qofinstance.cpp
+++ b/libgnucash/engine/qofinstance.cpp
@@ -1090,15 +1090,7 @@ qof_instance_get_kvp (QofInstance * inst, GValue * value, unsigned count, ...)
for (unsigned i{0}; i < count; ++i)
path.push_back (va_arg (args, char const *));
va_end (args);
- auto temp = gvalue_from_kvp_value (inst->kvp_data->get_slot (path));
- if (G_IS_VALUE (temp))
- {
- if (G_IS_VALUE (value))
- g_value_unset (value);
- g_value_init (value, G_VALUE_TYPE (temp));
- g_value_copy (temp, value);
- gnc_gvalue_free (temp);
- }
+ gvalue_from_kvp_value (inst->kvp_data->get_slot (path), value);
}
void
commit de9c0eb5408ed1f90fd36abc4f1d2d4a7bc4af0a
Author: John Ralls <jralls at ceridwen.us>
Date: Mon Feb 27 10:11:06 2023 -0800
Bug 797903 - Transaction window: The 'blue line' is always...
(erroneously) topmost when t. sorting order is inverted.
Same problem for the 'red line'. Make register code aware of sort
order and flip the logic when reverse sorting.
diff --git a/gnucash/gnome/gnc-split-reg.c b/gnucash/gnome/gnc-split-reg.c
index d6c37ce17..38cf709a7 100644
--- a/gnucash/gnome/gnc-split-reg.c
+++ b/gnucash/gnome/gnc-split-reg.c
@@ -2148,6 +2148,8 @@ gnc_split_reg_set_sort_reversed(GNCSplitReg *gsr, gboolean rev, gboolean refresh
Query *query = gnc_ledger_display_get_query( gsr->ledger );
qof_query_set_sort_increasing (query, !rev, !rev, !rev);
gsr->sort_rev = rev;
+ Account *acct = gnc_ledger_display_leader (gsr->ledger);
+ xaccAccountSetSortReversed(acct, rev);
if (refresh)
gnc_ledger_display_refresh( gsr->ledger );
}
diff --git a/gnucash/register/ledger-core/split-register-load.c b/gnucash/register/ledger-core/split-register-load.c
index a86250be0..99d8df6bd 100644
--- a/gnucash/register/ledger-core/split-register-load.c
+++ b/gnucash/register/ledger-core/split-register-load.c
@@ -25,7 +25,11 @@
#include <config.h>
#include <glib/gi18n.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include "Account.h"
+#include "Transaction.h"
#include "account-quickfill.h"
#include "combocell.h"
#include "gnc-component-manager.h"
@@ -373,6 +377,7 @@ gnc_split_register_load (SplitRegister* reg, GList* slist,
gboolean need_divider_upper = FALSE;
gboolean found_divider_upper = FALSE;
gboolean found_divider = FALSE;
+ bool reverse_sort = xaccAccountGetSortReversed(default_account);
gboolean has_last_num = FALSE;
gboolean multi_line;
gboolean dynamic;
@@ -605,7 +610,8 @@ gnc_split_register_load (SplitRegister* reg, GList* slist,
use_autoreadonly &&
!found_divider_upper)
{
- if (xaccTransGetDate (trans) >= autoreadonly_time)
+ if (((reverse_sort && xaccTransGetDate(trans) < autoreadonly_time) ||
+ (!reverse_sort && xaccTransGetDate (trans) >= autoreadonly_time)))
{
table->model->dividing_row_upper = vcell_loc.virt_row;
found_divider_upper = TRUE;
@@ -616,9 +622,9 @@ gnc_split_register_load (SplitRegister* reg, GList* slist,
}
}
- if (info->show_present_divider &&
- !found_divider &&
- (xaccTransGetDate (trans) > present))
+ if (info->show_present_divider && !found_divider &&
+ ((reverse_sort && xaccTransGetDate(trans) < present) ||
+ (!reverse_sort && xaccTransGetDate (trans) > present)))
{
table->model->dividing_row = vcell_loc.virt_row;
found_divider = TRUE;
@@ -649,7 +655,6 @@ gnc_split_register_load (SplitRegister* reg, GList* slist,
&vcell_loc);
table->model->dividing_row_lower = vcell_loc.virt_row;
-
if (!multi_line)
start_primary_color = !start_primary_color;
@@ -731,7 +736,9 @@ gnc_split_register_load (SplitRegister* reg, GList* slist,
&vcell_loc);
if (future_after_blank)
+ {
table->model->dividing_row_lower = vcell_loc.virt_row;
+ }
}
/* go to blank on first pass */
commit f483d7588e1ac7a5de5021ddea725145f5cd43c1
Author: Szia Tomi <sziatomi01 at gmail.com>
Date: Sun Feb 26 21:44:27 2023 +0100
Translation update by Szia Tomi <sziatomi01 at gmail.com> using Weblate
po/glossary/hu.po: 100.0% (216 of 216 strings; 0 fuzzy)
0 failing checks (0.0%)
Translation: GnuCash/Glossary (Hungarian)
Translate-URL: https://hosted.weblate.org/projects/gnucash/glossary/hu/
Co-authored-by: Szia Tomi <sziatomi01 at gmail.com>
diff --git a/po/glossary/hu.po b/po/glossary/hu.po
index 2bb28f5ea..29971e7d5 100644
--- a/po/glossary/hu.po
+++ b/po/glossary/hu.po
@@ -12,8 +12,8 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-12-05 20:11+0100\n"
-"PO-Revision-Date: 2023-02-23 12:38+0000\n"
-"Last-Translator: mocsa <csaba at feltoltve.hu>\n"
+"PO-Revision-Date: 2023-02-26 17:38+0000\n"
+"Last-Translator: Szia Tomi <sziatomi01 at gmail.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/gnucash/"
"glossary/hu/>\n"
"Language: hu\n"
@@ -110,7 +110,7 @@ msgstr "számlatÃpus: Részvény"
#. "This account type (new in gnucash-2.4.0) is used when exchanging or trading amounts from one currency into another"
msgid "account type: trading"
-msgstr "számlatÃpus: devizakonverziós"
+msgstr "számlatÃpus: kereskedés(devizakonverziós)"
#. "-"
msgid "account: parent account"
commit 6616ce10772bd91045343cc58ddc1d186dd4e9f6
Author: mocsa <csaba at feltoltve.hu>
Date: Sun Feb 26 21:44:27 2023 +0100
Translation update by mocsa <csaba at feltoltve.hu> using Weblate
po/hu.po: 64.1% (3464 of 5401 strings; 960 fuzzy)
199 failing checks (3.6%)
Translation: GnuCash/Program (Hungarian)
Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/hu/
Translation update by mocsa <csaba at feltoltve.hu> using Weblate
po/hu.po: 64.0% (3461 of 5401 strings; 963 fuzzy)
199 failing checks (3.6%)
Translation: GnuCash/Program (Hungarian)
Translate-URL: https://hosted.weblate.org/projects/gnucash/gnucash/hu/
Co-authored-by: mocsa <csaba at feltoltve.hu>
diff --git a/po/hu.po b/po/hu.po
index 640b4c77c..450af2c7f 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -14,8 +14,8 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2022-12-04 19:47-0800\n"
-"PO-Revision-Date: 2023-02-23 16:38+0000\n"
-"Last-Translator: Szia Tomi <sziatomi01 at gmail.com>\n"
+"PO-Revision-Date: 2023-02-26 20:44+0000\n"
+"Last-Translator: mocsa <csaba at feltoltve.hu>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/gnucash/"
"gnucash/hu/>\n"
"Language: hu\n"
@@ -903,7 +903,7 @@ msgstr "A könyv lezárása sikeres volt."
#. that will be created. This is a ngettext(3) message (but
#. only for the %d part).
#: gnucash/gnome/assistant-acct-period.c:315
-#, fuzzy, c-format
+#, c-format
msgid ""
"The earliest transaction date found in this book is %s. Based on the "
"selection made above, this book will be split into %d book."
@@ -911,9 +911,8 @@ msgid_plural ""
"The earliest transaction date found in this book is %s. Based on the "
"selection made above, this book will be split into %d books."
msgstr[0] ""
-"A legkorábbi könyvelés dátuma a könyvben %s. A fenti kiválasztás alapján a "
-"könyvelés-megosztás a %d könyvekben megy végbe. Kattintson a \"KövetkezÅ\"-"
-"re, hogy elkezdje bezárni az elsŠkönyvet."
+"Ebben a fÅkönyvben a legkorábbi tranzakció dátuma %s. A fenti választás "
+"alapján a könyv %d felé lesz szétosztva."
#. Translators: Run the assistant in your language to see GTK's translation of the button labels.
#: gnucash/gnome/assistant-acct-period.c:371
@@ -945,13 +944,13 @@ msgid ""
msgstr ""
#: gnucash/gnome/assistant-acct-period.c:525
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s\n"
"Congratulations! You are done closing books!\n"
msgstr ""
"%s\n"
-"Gratulálunk! Ãn végzett a könyvek lezárásával!\n"
+"Gratulálunk! Befejezte a könyvek lezárását!\n"
#: gnucash/gnome/assistant-acct-period.c:594
#: gnucash/gtkbuilder/dialog-fincalc.glade:650
@@ -1725,10 +1724,8 @@ msgstr "Töltelék számla lett kiválasztva. Próbálja újra."
#: gnucash/gnome/dialog-doclink.c:160
#: gnucash/gnome/gnc-plugin-page-register.c:4765
-#, fuzzy
-#| msgid "Select Account"
msgid "Select document"
-msgstr "Folyószámla kiválasztása"
+msgstr "Dokumentum kiválasztása"
#: gnucash/gnome/dialog-doclink.c:163 gnucash/gnome/gnc-plugin-budget.c:323
#: gnucash/gnome-search/search-account.c:238
@@ -15789,9 +15786,8 @@ msgid "Linked Document"
msgstr "MegbÃzás párbeszédablak"
#: gnucash/gtkbuilder/dialog-doclink.glade:697
-#, fuzzy
msgid "Available"
-msgstr "Számlázható?"
+msgstr ""
#: gnucash/gtkbuilder/dialog-doclink.glade:712
msgid "Relative"
@@ -16475,8 +16471,8 @@ msgstr "_Igen"
msgid ""
"<span weight=\"bold\" size=\"larger\">Display Welcome Dialog Again?</span>"
msgstr ""
-"<span weight=\"bold\" size=\"larger\">Ãjból megjelenÃti az "
-"üdvözlÅablakot?</span>"
+"<span weight=\"bold\" size=\"larger\">Máskor is jelenjen meg az "
+"ÃdvözlÅablak?</span>"
#: gnucash/gtkbuilder/dialog-new-user.glade:101
msgid ""
@@ -16484,9 +16480,9 @@ msgid ""
"will be displayed again next time you start GnuCash. If you press the <i>No</"
"i> button, it will not be displayed again."
msgstr ""
-"Ha az <i>Igen</i> gombot nyomja meg, az <i>Ãdvözli a GnuCash</i> ablak a "
-"következÅ alkalommal is megjelenik, amikor elindÃtja GnuCash-t. Ha a <i>Nem</"
-"i> gombot nyomja meg, akkor nem jelenik meg újra."
+"Ha az <i>Igen</i> gombra kattint, az <i>ÃdvözlÅablak</i> a GnuCash következÅ "
+"indÃtásakor is megjelenik. Ha a <i>Nem</i> gombra kattint, akkor nem jelenik "
+"meg újra."
#: gnucash/gtkbuilder/dialog-new-user.glade:210
msgid "<span size=\"larger\" weight=\"bold\">Welcome to GnuCash!</span>"
@@ -19257,9 +19253,8 @@ msgid "Only show _active owners"
msgstr ""
#: gnucash/gtkbuilder/gnc-tree-view-owner.glade:79
-#, fuzzy
msgid "Show _zero balance owners"
-msgstr "Nulla egyenlegű elemek feltüntetése?"
+msgstr ""
#: gnucash/gtkbuilder/window-autoclear.glade:71
#, fuzzy
@@ -21896,9 +21891,8 @@ msgid "Enter a name for the account"
msgstr "Adjon meg egy folyószámlanevet"
#: gnucash/import-export/qif-imp/dialog-account-picker.c:443
-#, fuzzy
msgid "Placeholder?"
-msgstr "Töltelék"
+msgstr "Töltelék?"
#: gnucash/import-export/qif-imp/gnc-plugin-qif-import.c:48
msgid "Import _QIF..."
@@ -22312,10 +22306,9 @@ msgstr "sample:Költségek:Autó:Ãzemanyag"
#. Translators: Abbreviation sample for Taxable?
#: gnucash/register/ledger-core/gncEntryLedgerLayout.c:132
-#, fuzzy
msgctxt "sample for 'Taxable'"
msgid "T?"
-msgstr "A"
+msgstr ""
#. Translators: Abbreviation sample for Tax Included
#: gnucash/register/ledger-core/gncEntryLedgerLayout.c:137
@@ -23077,9 +23070,8 @@ msgstr "Pénznem kiválasztása, amelyben jelentés értékei megjelennek."
#: gnucash/report/options-utilities.scm:143
#: gnucash/report/reports/standard/advanced-portfolio.scm:81
#: gnucash/report/reports/standard/price-scatter.scm:78
-#, fuzzy
msgid "The source of price information."
-msgstr "Az árinformáció forrása"
+msgstr "Ãrfolyamok forrása."
#: gnucash/report/options-utilities.scm:144
msgid "Average cost of purchases weighted by volume"
@@ -23486,27 +23478,23 @@ msgstr ""
#: gnucash/report/reports/aging.scm:410
#: gnucash/report/reports/standard/new-aging.scm:52
-#, fuzzy
msgid "Display Address 1."
-msgstr "Dátum megjelenÃtése?"
+msgstr ""
#: gnucash/report/reports/aging.scm:418
#: gnucash/report/reports/standard/new-aging.scm:53
-#, fuzzy
msgid "Display Address 2."
-msgstr "Dátum megjelenÃtése?"
+msgstr ""
#: gnucash/report/reports/aging.scm:426
#: gnucash/report/reports/standard/new-aging.scm:54
-#, fuzzy
msgid "Display Address 3."
-msgstr "Dátum megjelenÃtése?"
+msgstr ""
#: gnucash/report/reports/aging.scm:434
#: gnucash/report/reports/standard/new-aging.scm:55
-#, fuzzy
msgid "Display Address 4."
-msgstr "Dátum megjelenÃtése?"
+msgstr ""
#: gnucash/report/reports/aging.scm:442
#: gnucash/report/reports/standard/new-aging.scm:56
@@ -23528,9 +23516,8 @@ msgstr "Rövid jelölések megjelenÃtése"
#: gnucash/report/reports/aging.scm:466
#: gnucash/report/reports/standard/new-aging.scm:59
-#, fuzzy
msgid "Display Active status."
-msgstr "Dátum megjelenÃtése?"
+msgstr ""
#: gnucash/report/reports/aging.scm:539
#: gnucash/report/reports/standard/new-aging.scm:181
@@ -25530,9 +25517,8 @@ msgstr "Nem pénzjavak megjelenÃtése"
#: gnucash/report/reports/standard/balsheet-pnl.scm:124
#: gnucash/report/trep-engine.scm:551
-#, fuzzy
msgid "Also show original currency amounts"
-msgstr "A számla idegen pénznembeli összegeinek megjelenÃtése?"
+msgstr "Ãsszegek megjelenÃtése eredeti pénznemben is"
#: gnucash/report/reports/standard/balsheet-pnl.scm:126
msgid "If more than 1 period column, include overall period?"
@@ -26110,19 +26096,16 @@ msgid "Include transfers to and from Trading Accounts in the report."
msgstr ""
#: gnucash/report/reports/standard/cashflow-barchart.scm:107
-#, fuzzy
msgid "Show money in?"
-msgstr "Rajz megjelenÃtése"
+msgstr ""
#: gnucash/report/reports/standard/cashflow-barchart.scm:113
-#, fuzzy
msgid "Show money out?"
-msgstr "Rajz megjelenÃtése"
+msgstr ""
#: gnucash/report/reports/standard/cashflow-barchart.scm:119
-#, fuzzy
msgid "Show net money flow?"
-msgstr "Rajz megjelenÃtése"
+msgstr "Nettó pénzáramlás megjelenÃtése?"
#: gnucash/report/reports/standard/cashflow-barchart.scm:303
#: gnucash/report/reports/standard/cashflow-barchart.scm:339
@@ -26952,24 +26935,20 @@ msgid "Display the price per item?"
msgstr "Elemenkénti ár megjelenÃtése?"
#: gnucash/report/reports/standard/invoice.scm:225
-#, fuzzy
msgid "Display the entry's discount?"
-msgstr "Tétel-kedvezmény megjelenÃtése"
+msgstr ""
#: gnucash/report/reports/standard/invoice.scm:230
-#, fuzzy
msgid "Display the entry's taxable status?"
-msgstr "Adókötelesség megjelenÃtése"
+msgstr ""
#: gnucash/report/reports/standard/invoice.scm:235
-#, fuzzy
msgid "Display each entry's total total tax?"
-msgstr "Minden tételösszeg összesÃtett adója"
+msgstr ""
#: gnucash/report/reports/standard/invoice.scm:240
-#, fuzzy
msgid "Display the entry's value?"
-msgstr "Tétel értéke megjelenÃtése"
+msgstr ""
#: gnucash/report/reports/standard/invoice.scm:245
msgid "Display due date?"
@@ -27530,22 +27509,19 @@ msgstr "Számla megjelenÃtése?"
#: gnucash/report/reports/standard/new-owner-report.scm:918
#: gnucash/report/reports/standard/owner-report.scm:597
-#, fuzzy
msgid "Display the period debits column?"
-msgstr "Tétel-kedvezmény megjelenÃtése"
+msgstr ""
#: gnucash/report/reports/standard/new-owner-report.scm:923
#: gnucash/report/reports/standard/owner-report.scm:592
-#, fuzzy
msgid "Display the period credits column?"
-msgstr "Tétel-kedvezmény megjelenÃtése"
+msgstr ""
#: gnucash/report/reports/standard/new-owner-report.scm:928
#: gnucash/report/reports/standard/register.scm:413
#: gnucash/report/trep-engine.scm:962
-#, fuzzy
msgid "Display a running balance?"
-msgstr "Futó egyenleg megjelenÃtése"
+msgstr "Folyó egyenleg megjelenÃtése?"
#: gnucash/report/reports/standard/new-owner-report.scm:936
#, fuzzy
@@ -27575,9 +27551,8 @@ msgid "Detailed"
msgstr "Sikertelen"
#: gnucash/report/reports/standard/new-owner-report.scm:949
-#, fuzzy
msgid "Display document link?"
-msgstr "Számlanév megjelenÃtése hiperhivatkozásként"
+msgstr "Dokumentum hivatkozás megjelenÃtése?"
#: gnucash/report/reports/standard/new-owner-report.scm:1068
#, fuzzy
@@ -28169,9 +28144,8 @@ msgid "Display the Company Name?"
msgstr "Számlanév megjelenÃtése?"
#: gnucash/report/reports/standard/taxinvoice.scm:134
-#, fuzzy
msgid "Invoice Number next to title?"
-msgstr "Számlaszám"
+msgstr "Számlaszám a cÃm mellett?"
#: gnucash/report/reports/standard/taxinvoice.scm:135
#, fuzzy
@@ -28179,14 +28153,12 @@ msgid "Display Job name?"
msgstr "Számlanév megjelenÃtése?"
#: gnucash/report/reports/standard/taxinvoice.scm:136
-#, fuzzy
msgid "Invoice Job number?"
-msgstr "Számlaszám"
+msgstr ""
#: gnucash/report/reports/standard/taxinvoice.scm:137
-#, fuzzy
msgid "Show net price?"
-msgstr "Ãrak feltüntetése"
+msgstr "Nettó ár megjelenÃtése?"
#: gnucash/report/reports/standard/taxinvoice.scm:154
msgid "Name of a file containing a logo to be used on the report."
@@ -29176,9 +29148,8 @@ msgid ""
msgstr ""
#: gnucash/report/trep-engine.scm:637
-#, fuzzy
msgid "Filter by reconcile status."
-msgstr "Tranzakciódátum megjelenÃtése?"
+msgstr ""
#: gnucash/report/trep-engine.scm:644
#, fuzzy
@@ -29224,18 +29195,16 @@ msgid "Show the account description for subheadings?"
msgstr "Számlakód megjelenÃtése alösszegekhez és alcÃmekhez?"
#: gnucash/report/trep-engine.scm:810
-#, fuzzy
msgid "Show the informal headers for debit/credit accounts?"
-msgstr "Bevételi- és költségszámlák megjelenÃtése"
+msgstr ""
#: gnucash/report/trep-engine.scm:817
msgid "Add indenting columns with grouping and subtotals?"
msgstr ""
#: gnucash/report/trep-engine.scm:824
-#, fuzzy
msgid "Show subtotals only, hiding transactional detail?"
-msgstr "Do not print transaction detail"
+msgstr ""
#: gnucash/report/trep-engine.scm:831
msgid "Subtotal according to the primary key?"
@@ -29280,30 +29249,24 @@ msgid "Display the notes if the memo is unavailable?"
msgstr ""
#: gnucash/report/trep-engine.scm:952 gnucash/report/trep-engine.scm:955
-#, fuzzy
msgid "Display the full account name?"
-msgstr "Teljes számlanév megjelenÃtése"
+msgstr "Teljes számlanév megjelenÃtése?"
#: gnucash/report/trep-engine.scm:953
-#, fuzzy
msgid "Display the account code?"
-msgstr "Számlakód megjelenÃtése"
+msgstr "Számlakód megjelenÃtése?"
#: gnucash/report/trep-engine.scm:956
-#, fuzzy
msgid "Display the other account code?"
-msgstr "A másik számla kódjának megjelenÃtése"
+msgstr "A másik számla kódjának megjelenÃtése?"
#: gnucash/report/trep-engine.scm:958
-#, fuzzy
-#| msgid "Display the transaction amount?"
msgid "Display the transaction linked document"
-msgstr "Tranzakció összegének megjelenÃtése?"
+msgstr ""
#: gnucash/report/trep-engine.scm:961
-#, fuzzy
msgid "Display a subtotal summary table."
-msgstr "Feltüntessem a részletösszegeket?"
+msgstr "Részösszegek összefoglaló táblázatának megjelenÃtése."
#: gnucash/report/trep-engine.scm:969
#, fuzzy
commit 47b85d3b2fcf9bed4f68b46a94f764d8cd0f4581
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Mon Feb 27 05:29:08 2023 +0800
[gnc-xml-backend.cpp] g_free char* from g_path_get_dirname
diff --git a/libgnucash/backend/xml/gnc-xml-backend.cpp b/libgnucash/backend/xml/gnc-xml-backend.cpp
index 03cc9b9b0..5a4ff4391 100644
--- a/libgnucash/backend/xml/gnc-xml-backend.cpp
+++ b/libgnucash/backend/xml/gnc-xml-backend.cpp
@@ -136,7 +136,10 @@ GncXmlBackend::session_begin(QofSession* session, const char* new_uri,
if (!check_path(m_fullpath.c_str(),
mode == SESSION_NEW_STORE || mode == SESSION_NEW_OVERWRITE))
return;
- m_dirname = g_path_get_dirname (m_fullpath.c_str());
+
+ auto dirname = g_path_get_dirname (m_fullpath.c_str());
+ m_dirname = dirname;
+ g_free (dirname);
Summary of changes:
gnucash/gnome/gnc-split-reg.c | 2 +
gnucash/register/ledger-core/split-register-load.c | 17 ++-
libgnucash/backend/xml/gnc-xml-backend.cpp | 5 +-
libgnucash/engine/Transaction.c | 161 ++++++---------------
libgnucash/engine/TransactionP.h | 16 +-
libgnucash/engine/kvp-frame.cpp | 43 ++----
libgnucash/engine/kvp-value.hpp | 11 +-
libgnucash/engine/mocks/gmock-Transaction.h | 2 -
libgnucash/engine/qofinstance.cpp | 10 +-
po/glossary/hu.po | 6 +-
po/hu.po | 129 ++++++-----------
11 files changed, 139 insertions(+), 263 deletions(-)
More information about the gnucash-changes
mailing list