alexrj/Slic3r — pull request #2187 by klirichek (2014-07-30 12:36:52+00:00)
Title: Fixed misparsing config and even crash because of different locale

Sllic3r crashes when new options (like bed_shape) added and saved into settings, and when you try to start with these new options.
Also some fraq options (like nozzle_diameter) became zero on reload.

I've investigated the problem and found that the deal is that in 'serialize' method for config parameters C++ ostringstream is used, but for 'deserialize' - plain C 'atof', 'sscanf', etc.

The application may be set global C++ locale, but do nothing with C part. So, it uses system locale, and can't interpret float numbers if the system expect comma as int/fraq separator instead of international dot.
(say, in russian you have to write pi as 3,14, NOT as 3.14)

Parsing floats in bed_shape leaded to empty shape and crash with exception of GUI.
Parsing float 'nozzle_diameter' leaded to zero value.
There are also other side effects (say, filament diameter; number of extruders, etc) which are seems to be ok in .ini file, bit totally wrong on GUI.

The patch just explicitly sets 'C' locale for every deserialization (may be it is enouth to call it just once somewhere - but several calls doesn't seem to break or slow down anything, since deserialization is not a bottleneck function).