From 43d3599c7363b9e5e4392ce79404476b7738605f Mon Sep 17 00:00:00 2001 From: John Date: Sat, 8 Jul 2023 11:29:27 +0200 Subject: [PATCH] fix for topic separator check (closes #943) --- src/lib/ebus/stringhelper.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/lib/ebus/stringhelper.cpp b/src/lib/ebus/stringhelper.cpp index 43b55ba8..630b78f3 100644 --- a/src/lib/ebus/stringhelper.cpp +++ b/src/lib/ebus/stringhelper.cpp @@ -142,14 +142,23 @@ const string StringReplacer::str() const { void StringReplacer::ensureDefault(const string& separator) { if (m_parts.empty()) { m_parts.emplace_back(string(PACKAGE) + separator, -1); - } else if (m_parts.size() == 1 && m_parts[0].second < 0 && m_parts[0].first.find('/') == string::npos) { - m_parts[0] = {m_parts[0].first + separator, -1}; // ensure trailing slash } if (!has("circuit")) { + if (m_parts.back().second >= 0) { + // add separator between two variables + m_parts.emplace_back(separator, -1); + } else if (m_parts.back().first.back() != '/') { + m_parts[m_parts.size() - 1] = {m_parts.back().first + separator, -1}; // ensure trailing slash + } m_parts.emplace_back("circuit", 0); // index of circuit in knownFieldNames - m_parts.emplace_back(separator, -1); } if (!has("name")) { + if (m_parts.back().second >= 0) { + // add separator between two variables + m_parts.emplace_back(separator, -1); + } else if (m_parts.back().first.back() != '/') { + m_parts[m_parts.size() - 1] = {m_parts.back().first + separator, -1}; // ensure trailing slash + } m_parts.emplace_back("name", 1); // index of name in knownFieldNames } }