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.
This commit is contained in:
parent
e15524cc64
commit
18011482bb
@ -756,6 +756,7 @@ IO::find_possible_bundle (const string &desired_name)
|
|||||||
string possible_name;
|
string possible_name;
|
||||||
bool stereo = false;
|
bool stereo = false;
|
||||||
string::size_type last_non_digit_pos;
|
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)
|
error << string_compose(_("Unknown bundle \"%1\" listed for %2 of %3"), desired_name, bundle_type_name, _name)
|
||||||
<< endmsg;
|
<< endmsg;
|
||||||
@ -766,9 +767,8 @@ IO::find_possible_bundle (const string &desired_name)
|
|||||||
last_non_digit_pos = desired_name.find_last_not_of(digits);
|
last_non_digit_pos = desired_name.find_last_not_of(digits);
|
||||||
|
|
||||||
if (last_non_digit_pos != string::npos) {
|
if (last_non_digit_pos != string::npos) {
|
||||||
stringstream s;
|
bundle_number_str = desired_name.substr(last_non_digit_pos);
|
||||||
s << desired_name.substr(last_non_digit_pos);
|
bundle_number = string_to<int32_t>(bundle_number_str);
|
||||||
s >> bundle_number;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// see if it's a stereo connection e.g. "in 3+4"
|
// 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) {
|
if (left_last_non_digit_pos != string::npos) {
|
||||||
int left_bundle_number = 0;
|
int left_bundle_number = 0;
|
||||||
stringstream s;
|
bundle_number_str = desired_name.substr(left_last_non_digit_pos, last_non_digit_pos-1);
|
||||||
s << desired_name.substr(left_last_non_digit_pos, last_non_digit_pos-1);
|
left_bundle_number = string_to<int32_t>(bundle_number_str);
|
||||||
s >> left_bundle_number;
|
|
||||||
|
|
||||||
if (left_bundle_number > 0 && left_bundle_number + 1 == bundle_number) {
|
if (left_bundle_number > 0 && left_bundle_number + 1 == bundle_number) {
|
||||||
bundle_number--;
|
bundle_number--;
|
||||||
@ -807,15 +806,12 @@ IO::find_possible_bundle (const string &desired_name)
|
|||||||
if (bundle_number & mask) {
|
if (bundle_number & mask) {
|
||||||
bundle_number &= ~mask;
|
bundle_number &= ~mask;
|
||||||
|
|
||||||
stringstream s;
|
std::string possible_name = default_name + " " + to_string(bundle_number + 1);
|
||||||
s << default_name << " " << bundle_number + 1;
|
|
||||||
|
|
||||||
if (stereo) {
|
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) {
|
if ((c = _session.bundle_by_name (possible_name)) != 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user