gnucash master: Don't make anonymous frames from leading or trailing '/' in keys.
John Ralls
jralls at code.gnucash.org
Thu Jul 23 20:40:17 EDT 2015
Updated via https://github.com/Gnucash/gnucash/commit/b3bc68dc (commit)
from https://github.com/Gnucash/gnucash/commit/0db17f10 (commit)
commit b3bc68dc1ba7849c9dc39f21eb7443a503bf42a5
Author: John Ralls <jralls at ceridwen.us>
Date: Wed Jul 22 22:05:13 2015 -0700
Don't make anonymous frames from leading or trailing '/' in keys.
diff --git a/src/engine/test/utest-Transaction.cpp b/src/engine/test/utest-Transaction.cpp
index eabca0c..50cc22e 100644
--- a/src/engine/test/utest-Transaction.cpp
+++ b/src/engine/test/utest-Transaction.cpp
@@ -909,7 +909,7 @@ test_xaccTransEqual (Fixture *fixture, gconstpointer pData)
xaccTransCommitEdit (clone);
g_free (cleanup->msg);
g_free (check->msg);
- check->msg = g_strdup ("[xaccTransEqual] kvp frames differ:\n{\n => KVP_VALUE_FRAME({\n qux => KVP_VALUE_FRAME({\n quux => KVP_VALUE_FRAME({\n corge => KVP_VALUE_DOUBLE(654.321),\n}\n),\n}\n),\n}\n),\n notes => KVP_VALUE_STRING(Salt pork sausage),\n}\n\n\nvs\n\n{\n => KVP_VALUE_FRAME({\n qux => KVP_VALUE_FRAME({\n quux => KVP_VALUE_FRAME({\n corge => KVP_VALUE_DOUBLE(123.456),\n}\n),\n}\n),\n}\n),\n notes => KVP_VALUE_STRING(Salt pork sausage),\n}\n");
+ check->msg = g_strdup ("[xaccTransEqual] kvp frames differ:\n{\n notes => KVP_VALUE_STRING(Salt pork sausage),\n qux => KVP_VALUE_FRAME({\n quux => KVP_VALUE_FRAME({\n corge => KVP_VALUE_DOUBLE(654.321),\n}\n),\n}\n),\n}\n\n\nvs\n\n{\n notes => KVP_VALUE_STRING(Salt pork sausage),\n qux => KVP_VALUE_FRAME({\n quux => KVP_VALUE_FRAME({\n corge => KVP_VALUE_DOUBLE(123.456),\n}\n),\n}\n),\n}\n");
g_assert (!xaccTransEqual (clone, txn0, TRUE, FALSE, TRUE, TRUE));
diff --git a/src/libqof/qof/kvp_frame.cpp b/src/libqof/qof/kvp_frame.cpp
index 4fa33d6..db033f4 100644
--- a/src/libqof/qof/kvp_frame.cpp
+++ b/src/libqof/qof/kvp_frame.cpp
@@ -73,7 +73,8 @@ make_vector(std::string key)
Path path;
for (auto length = key.find(delim); length != std::string::npos;)
{
- path.push_back(key.substr(0, length));
+ if (length != 0)
+ path.push_back(key.substr(0, length));
key = key.substr(length + 1);
length = key.find(delim);
}
diff --git a/src/libqof/qof/test/test-kvp-frame.cpp b/src/libqof/qof/test/test-kvp-frame.cpp
index 956f38b..4ee2c98 100644
--- a/src/libqof/qof/test/test-kvp-frame.cpp
+++ b/src/libqof/qof/test/test-kvp-frame.cpp
@@ -103,6 +103,16 @@ TEST_F (KvpFrameTest, SetPathSlash)
delete v1;
}
+TEST_F (KvpFrameTest, SetPathIgnoreBeginEndSlash)
+{
+ Path path1 {"top", "/second/", "twenty-first"};
+ Path path2 {"top", "second", "twenty-first"};
+ auto v1 = new KvpValueImpl {15.0};
+
+ EXPECT_EQ (nullptr, t_root.set(path1, v1));
+ EXPECT_EQ (v1, t_root.get_slot(path2));
+}
+
TEST_F (KvpFrameTest, SetPathWithCreate)
{
Path path1 {"top", "second", "twenty-first"};
Summary of changes:
src/engine/test/utest-Transaction.cpp | 2 +-
src/libqof/qof/kvp_frame.cpp | 3 ++-
src/libqof/qof/test/test-kvp-frame.cpp | 10 ++++++++++
3 files changed, 13 insertions(+), 2 deletions(-)
More information about the gnucash-changes
mailing list