Well! It looks like g_ascii_strtod is NOT totally locale safe! What a shame. Here are the reports from my debugging of src/svg/svg-affine.cpp, sp_svg_transform_read:
Under "C" locale:
took 1 chars from '1,0,0,0.999999,4.42378e-08,-1.09524e-06)' to make 1.000000 took 1 chars from '0,0,0.999999,4.42378e-08,-1.09524e-06)' to make 0.000000 took 1 chars from '0,0.999999,4.42378e-08,-1.09524e-06)' to make 0.000000 took 8 chars from '0.999999,4.42378e-08,-1.09524e-06)' to make 0.999999 took 11 chars from '4.42378e-08,-1.09524e-06)' to make 0.000000 took 12 chars from '-1.09524e-06)' to make -0.000001
Under "fr_FR" locale:
took 3 chars from '1,0,0,0.999999,4.42378e-08,-1.09524e-06)' to make 1,000000 took 3 chars from '0,0.999999,4.42378e-08,-1.09524e-06)' to make 0,000000 took 7 chars from '.999999,4.42378e-08,-1.09524e-06)' to make 0,999999 took 11 chars from '4.42378e-08,-1.09524e-06)' to make 0,000000 took 12 chars from '-1.09524e-06)' to make -0,000001
Yuck! (And it works correctly under "LANG=fr_FR LC_NUMERIC=C", further proving it to be locale-sensitive.)
And, checking the most recent CVS of gstrfuncs.c in the gnome cvs:
* glib/gstrfuncs.c (g_ascii_strtod): Fix problems when a locale-specific decimal separator directly follows a number. (#138424, Nickolay V. Shmyrev)