Wow, great work! That can’t have been easy to track down…
This sounds similar to this issue that @bjeurissen encountered a while back. The added problem there was that this was internal to Qt, which meant we couldn’t modify the code – there was nothing we could do other than modify the locale, in pretty much the same way as you suggest.
sscanf (data.c_str(), "%f %f %f %f", &values, &values, &values, &values);
to something that relies on our own string converters, which somehow ignore the locale, like:
auto list = split (data); for (int n = 0; n < 4; ++n) values[n] = to<float>(list[n]);
What do you think? There might be other places in the code to modify similarly…
Also worth moving this discussion off to GitHub at this point.