From 0c4d438a0e027f2dd295bc5f679adfe56f69f389 Mon Sep 17 00:00:00 2001 From: Christopher Lam Date: Wed, 6 Apr 2022 07:15:09 +0800 Subject: [PATCH] [kvp-frame.cpp] expose iterator, skip inexistent frame --- libgnucash/engine/kvp-frame.cpp | 2 ++ libgnucash/engine/kvp-frame.hpp | 3 +++ 2 files changed, 5 insertions(+) diff --git a/libgnucash/engine/kvp-frame.cpp b/libgnucash/engine/kvp-frame.cpp index 74d33b8fa1..56be042d4c 100644 --- a/libgnucash/engine/kvp-frame.cpp +++ b/libgnucash/engine/kvp-frame.cpp @@ -78,6 +78,8 @@ KvpFrame::get_child_frame_or_nullptr (Path const & path) noexcept if (map_iter == m_valuemap.end ()) return nullptr; auto child = map_iter->second->get (); + if (!child) + return nullptr; Path send; std::copy (path.begin () + 1, path.end (), std::back_inserter (send)); return child->get_child_frame_or_nullptr (send); diff --git a/libgnucash/engine/kvp-frame.hpp b/libgnucash/engine/kvp-frame.hpp index 253eec3187..704d5a3d7b 100644 --- a/libgnucash/engine/kvp-frame.hpp +++ b/libgnucash/engine/kvp-frame.hpp @@ -226,6 +226,9 @@ struct KvpFrameImpl bool empty() const noexcept { return m_valuemap.empty(); } friend int compare(const KvpFrameImpl&, const KvpFrameImpl&) noexcept; + map_type::iterator begin() { return m_valuemap.begin(); } + map_type::iterator end() { return m_valuemap.end(); } + private: map_type m_valuemap;