Serialization and deserialization of doubles in
XmlRpc++ suffers from two bugs:
1) It uses locale-dependent CRT functions; this means
that under locales such as de_DE or cs_CZ where radix
character is ',' and not '.', XmlRpc++ incorrectly
formats doubles using ',' (XML-RPC spec explicitly
permits only '.') and also can't handle correct input.
2) XML-RPC spec doesn't allow scientific notation for
floats, but XmlRpc++ both accepts and outputs it --
again, because of use of CRT functions for the conversion.
Attached patch fixes this by using from-scratch
implementation of double<->string conversion. The code
used performs exact conversion and is used e.g. in
KHTML or Mozilla. It's under BSD-style license, see the
beginning of c_dtoa.cpp file.
Log in to post a comment.