gnucash master: Fixed kvp-value delete
John Ralls
jralls at code.gnucash.org
Fri Oct 31 15:08:27 EDT 2014
Updated via https://github.com/Gnucash/gnucash/commit/6c2a42bf (commit)
from https://github.com/Gnucash/gnucash/commit/8eae1d8f (commit)
commit 6c2a42bf4957210b11aaaa7b2c9abc51515a2d70
Author: lmat <dartme18 at gmail.com>
Date: Fri Oct 31 12:35:59 2014 -0400
Fixed kvp-value delete
Delete wasn't being called properly due to bad template resolution.
diff --git a/src/libqof/qof/kvp-value.cpp b/src/libqof/qof/kvp-value.cpp
index bbf6ccd..4df79c3 100644
--- a/src/libqof/qof/kvp-value.cpp
+++ b/src/libqof/qof/kvp-value.cpp
@@ -291,33 +291,35 @@ compare(const KvpValueImpl * one, const KvpValueImpl * two) noexcept
return compare(*one, *two);
}
-template <typename T> void
-delete_value(T & value)
+struct delete_visitor : boost::static_visitor<void>
{
- /*do nothing*/
-}
+ template <typename T> void
+ operator()(T &) { /*do nothing*/ }
+};
+
template <> void
-delete_value(GList * & value)
+delete_visitor::operator()(GList * & value)
{
kvp_glist_delete(value);
}
template <> void
-delete_value(gchar * & value)
+delete_visitor::operator()(gchar * & value)
{
g_free(value);
}
template <> void
-delete_value(GncGUID * & value)
+delete_visitor::operator()(GncGUID * & value)
{
guid_free(value);
}
template <> void
-delete_value(KvpFrame * & value)
+delete_visitor::operator()(KvpFrame * & value)
{
kvp_frame_delete(value);
}
KvpValueImpl::~KvpValueImpl() noexcept
{
- delete_value(datastore);
+ delete_visitor d;
+ boost::apply_visitor(d, datastore);
}
Summary of changes:
src/libqof/qof/kvp-value.cpp | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
More information about the gnucash-changes
mailing list