Working on #0022898 I had a little look on the source code regarding locale handling and string to real conversion.
Why is there a CStringToReal function in class OSD and in class OSD_Real2String with the same signature? The functions are also used in a very few cases. A "grep -r StringToReal *" in the src-folder gives only 23 matches.
In contrast to that a "grep -r atof *" leads to 1030 matches. The problem with atof is, that there is no possibility to know if everything works as expected. strtod has this possibility, but "grep -r strtod *" gives only 15 matches (including the use in the both mentioned OSD classes).
Is there a reason to have this different implementations? Otherwise I would suggest to change the code to only use one. One of the OSD-functions would have the advantage to be able to detect wrong conversions (due to different locale settings).
Also I am wondering why there is class OSD_Localizer, that seems to be used only once (in OpenGl_GraphicDriver_Export.cxx). All other changing of locales seems to be done by setlocale(). Could this be changed, so there is only one used?