From: Tim Mayberry Date: Wed, 7 Sep 2016 13:07:36 +0000 (+1000) Subject: Use PBD::string_to/to_string in IO::find_possible_bundle X-Git-Tag: 5.9~248 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=18011482bb1c8c0b66a4dbc50f46f6bc011f650a;p=ardour.git Use PBD::string_to/to_string in IO::find_possible_bundle Possible issue with numeric formatting using std::streams in locales with grouping. Although I don't think it would be an issue in this case use locale independant alternative for numeric formatting anyway. --- diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc index 5b949613c3..2dcc9d53a7 100644 --- a/libs/ardour/io.cc +++ b/libs/ardour/io.cc @@ -756,6 +756,7 @@ IO::find_possible_bundle (const string &desired_name) string possible_name; bool stereo = false; string::size_type last_non_digit_pos; + std::string bundle_number_str; error << string_compose(_("Unknown bundle \"%1\" listed for %2 of %3"), desired_name, bundle_type_name, _name) << endmsg; @@ -766,9 +767,8 @@ IO::find_possible_bundle (const string &desired_name) last_non_digit_pos = desired_name.find_last_not_of(digits); if (last_non_digit_pos != string::npos) { - stringstream s; - s << desired_name.substr(last_non_digit_pos); - s >> bundle_number; + bundle_number_str = desired_name.substr(last_non_digit_pos); + bundle_number = string_to(bundle_number_str); } // see if it's a stereo connection e.g. "in 3+4" @@ -780,9 +780,8 @@ IO::find_possible_bundle (const string &desired_name) if (left_last_non_digit_pos != string::npos) { int left_bundle_number = 0; - stringstream s; - s << desired_name.substr(left_last_non_digit_pos, last_non_digit_pos-1); - s >> left_bundle_number; + bundle_number_str = desired_name.substr(left_last_non_digit_pos, last_non_digit_pos-1); + left_bundle_number = string_to(bundle_number_str); if (left_bundle_number > 0 && left_bundle_number + 1 == bundle_number) { bundle_number--; @@ -807,15 +806,12 @@ IO::find_possible_bundle (const string &desired_name) if (bundle_number & mask) { bundle_number &= ~mask; - stringstream s; - s << default_name << " " << bundle_number + 1; + std::string possible_name = default_name + " " + to_string(bundle_number + 1); if (stereo) { - s << "+" << bundle_number + 2; + possible_name += "+" + to_string(bundle_number + 2); } - possible_name = s.str(); - if ((c = _session.bundle_by_name (possible_name)) != 0) { break; }