|View Issue Details [ Jump to Notes ]||[ Issue History ] [ Print ]|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0002599||LibSVGTiny||[All Projects] General||public||2018-05-11 06:36||2019-02-17 10:30|
|Assigned To||Michael Drake|
|Summary||0002599: libsvgtiny uses sscanf() to parse decimal fractions in path data, which is locale-dependent|
|Description||libsvgtiny uses the C standard library function sscanf() to parse decimal fractions into floating-point values. Unfortunately, the exact format accepted by this function is locale-dependent. This makes parsing fail in locales where the decimal point character is different from '.'.|
Given that sscanf() does not offer a portable way to enforce locale-independent parsing, libsvgtiny should probably implement its own fraction-parsing function from scratch.
|Steps To Reproduce||0. Ensure that the de_DE.UTF-8 locale (or any other locale with decimal point ',') is available on your system.|
1. In libsvgtiny's test/data/ directory, launch `LC_NUMERIC=de_DE.UTF-8 netsurf-fb file://`pwd`/tiger.svg` from the shell (replacing de_DE.UTF-8 with the respective locale if necessary).
2. Observe numerous 'parse failed at ...' messages in the console.
3. In the same directory, launch `LC_NUMERIC=C netsurf-fb file://`pwd`/tiger.svg`.
4. Observe no failure messages.
|Tags||No tags attached.|
|Fixed in CI build #|
|Reported in CI build #|
Michael Drake (administrator)
Thanks for the report. You're right. This will require quite a rewrite of libsvgtiny's parsing code. We'll try to get around to it some time, but we're all busy with other things at the moment.
If anyone's interested in helping please get in touch.
|2018-05-11 06:36||Felix S.||New Issue|
|2019-02-16 18:27||Vincent Sanders||Assigned To||=> Michael Drake|
|2019-02-16 18:27||Vincent Sanders||Status||new => confirmed|
|2019-02-17 10:30||Michael Drake||Note Added: 0001889|