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