From d53c66973cc9986c74dd320929600a6afcc695d8 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sat, 27 Aug 2016 22:27:10 +1000 Subject: [PATCH] Use XMLNode::get/set_property in ARDOUR::ChanMapping class This avoids possible demotion of unsigned integers when using the add_property(char*, long) API. Which is unlikely to have ever been an issue but worth noting. --- libs/ardour/chan_mapping.cc | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libs/ardour/chan_mapping.cc b/libs/ardour/chan_mapping.cc index f6f0e092c8..b3cbb10ef4 100644 --- a/libs/ardour/chan_mapping.cc +++ b/libs/ardour/chan_mapping.cc @@ -22,6 +22,7 @@ #include #include #include "ardour/chan_mapping.h" +#include "ardour/types_convert.h" #include "pbd/i18n.h" @@ -59,10 +60,13 @@ ChanMapping::ChanMapping (const XMLNode& node) XMLNodeConstIterator iter = node.children().begin(); for ( ; iter != node.children().end(); ++iter) { if ((*iter)->name() == X_(state_node_name)) { - const string& type_str = (*iter)->property("type")->value(); - const string& from_str = (*iter)->property("from")->value(); - const string& to_str = (*iter)->property("to")->value(); - set(DataType(type_str), atol (from_str.c_str()), atol (to_str.c_str())); + DataType type(DataType::NIL); + uint32_t from; + uint32_t to; + (*iter)->get_property("type", type); + (*iter)->get_property("from", from); + (*iter)->get_property("to", to); + set(type, from, to); } } } @@ -160,9 +164,9 @@ ChanMapping::state(const std::string& name) const for (Mappings::const_iterator tm = mp.begin(); tm != mp.end(); ++tm) { for (TypeMapping::const_iterator i = tm->second.begin(); i != tm->second.end(); ++i) { XMLNode* n = new XMLNode(X_(state_node_name)); - n->add_property("type", tm->first.to_string()); - n->add_property("from", i->first); - n->add_property("to", i->second); + n->set_property("type", tm->first.to_string()); + n->set_property("from", i->first); + n->set_property("to", i->second); node->add_child_nocopy(*n); } }