Fix parsing of absolute list-ending paths

When parsing an absolute path, the grammar first clears m_curPath in
absolutePath_class, and then tries to parse nodes separated by slashes.
Due to how list-ending paths are a little bit more complex, these nodes
are parsed in a separate rule called dataNodesListEnd. This rule
incorrectly used initializePath to reset the m_curPath to the original
one (which basically means undoing what absolutePath_class does).

dataNodesListEnd doesn't reset the path anymore.

Change-Id: If617b697f37b25a15521cb947919c6ac9b6c81bd
diff --git a/src/grammars.hpp b/src/grammars.hpp
index de00a8b..871d3c0 100644
--- a/src/grammars.hpp
+++ b/src/grammars.hpp
@@ -197,8 +197,8 @@
 // Spirit wouldn't know we want it to collapse.
 // https://github.com/boostorg/spirit/issues/408
 auto const dataNodesListEnd_def =
-    initializePath >> dataNode % '/' >> '/' >> dataNodeList >> -(&char_('/') >> createPathSuggestions) |
-    initializePath >> x3::attr(decltype(dataPath_::m_nodes)()) >> dataNodeList;
+    dataNode % '/' >> '/' >> dataNodeList >> -(&char_('/') >> createPathSuggestions) |
+    x3::attr(decltype(dataPath_::m_nodes)()) >> dataNodeList;
 
 auto const dataPathListEnd_def =
     initializePath >> absoluteStart >> createPathSuggestions >> x3::attr(decltype(dataPath_::m_nodes)()) >> x3::attr(TrailingSlash::NonPresent) >> x3::eoi |
diff --git a/tests/ls.cpp b/tests/ls.cpp
index e18cf25..fffac28 100644
--- a/tests/ls.cpp
+++ b/tests/ls.cpp
@@ -135,6 +135,14 @@
                 expected.m_path = dataPath_{Scope::Relative, {dataNode_(module_{"example"}, list_{"list"})}};
             }
 
+            SECTION("ls /example:list")
+            {
+                SECTION("cwd: /") {}
+                SECTION("cwd: /example:a") { parser.changeNode(dataPath_{Scope::Relative, {dataNode_(module_{"example"}, container_{"a"})}}); }
+                input = "ls /example:list";
+                expected.m_path = dataPath_{Scope::Absolute, {dataNode_(module_{"example"}, list_{"list"})}};
+            }
+
             SECTION("ls example:a/example:listInCont")
             {
                 input = "ls example:a/example:listInCont";