From cab03ef1c60ae45b36c2d3565f1946e8a4f05388 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Tue, 12 Jun 2012 18:28:25 +0000 Subject: [PATCH] When creating an Option, OptionManager takes it's initial value from it's parent if possible --- src/option_manager.cc | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/option_manager.cc b/src/option_manager.cc index 8e55c2ebc..a0533f8fb 100644 --- a/src/option_manager.cc +++ b/src/option_manager.cc @@ -10,10 +10,23 @@ Option& OptionManager::operator[] (const String& name) auto it = m_options.find(name); if (it != m_options.end()) return it->second; - else if (m_parent) - return (*m_parent)[name]; else - return m_options[name]; + { + Option& res = m_options[name]; + OptionManager* parent = m_parent; + while (parent) + { + auto parent_it = parent->m_options.find(name); + if (parent_it != parent->m_options.end()) + { + res = parent_it->second; + break; + } + else + parent = parent->m_parent; + } + return res; + } } const Option& OptionManager::operator[] (const String& name) const