Hello! On Wed, May 21, 2008 at 10:53:13AM +0200, Michael Hanke wrote: > On Tue, May 20, 2008 at 11:12:37PM +0200, Philipp Matthias Hahn wrote: > > Package: qlandkarte > > Version: 0.7.2~dfsg.1-1 > > Severity: important > > > > Upstream-Bug, please forward. > > > > Depending on which locale is set when QLandkarte is launched, the saved > > .gpx files contain differenr number-formats in the @lon and @lat > > attribute of track-points. For example, Germany uses ',' whilte the USA > > use '.' as the floatingpoint-delimiter. > I cannot reproduce this bug, nor can upstream. I tried with your LANG > settings and I always get '.' as the delimiter. Whatever causes this bug > on your system seems to be within Qt. Please also see upstream's > response: > > http://sourceforge.net/mailarchive/forum.php?thread_name=20080521053226.GB3492%40localhost&forum_name=qlandkarte-users
It's not the fault of QLandkarte, but Qt4 seams to be broken to use "printf(%g)" for the conversion of doubles to strings. Please consider re-assigning this bug to qt4-x11. Nether the less it affects QLandkarte. $ locale LANG=de_DE.UTF-8 LC_CTYPE="de_DE.UTF-8" LC_NUMERIC="de_DE.UTF-8" LC_TIME="de_DE.UTF-8" LC_COLLATE="de_DE.UTF-8" LC_MONETARY="de_DE.UTF-8" LC_MESSAGES="de_DE.UTF-8" LC_PAPER="de_DE.UTF-8" LC_NAME="de_DE.UTF-8" LC_ADDRESS="de_DE.UTF-8" LC_TELEPHONE="de_DE.UTF-8" LC_MEASUREMENT="de_DE.UTF-8" LC_IDENTIFICATION="de_DE.UTF-8" LC_ALL= qt4-x11-4.4.0/src/xml/dom/qdom.cpp:4823 void QDomElement::setAttribute(const QString& name, double value) { if (!impl) return; QString x; char buf[256]; int count = qsnprintf(buf, sizeof(buf), "%.16g", value); $ gdb bin/qlandkarte (gdb) s QDomElement::setAttribute (this=0xbfe82550, [EMAIL PROTECTED], value=53.125089034438133) at dom/qdom.cpp:4825 ^ (gdb) n 4829 int count = qsnprintf(buf, sizeof(buf), "%.16g", value); ^^^^^ (gdb) print buf $14 = "53,12508903443813\000... ^ qt4-x11-4.4.0/src/corelib/tools/qvsnprintf.cpp:77 int qvsnprintf(char *str, size_t n, const char *fmt, va_list ap) { if (!str || !fmt) return -1; QString buf; buf.vsprintf(fmt, ap); qt4-x11-4.4.0/src/corelib/tools/qstring.cpp:4542 QString &QString::vsprintf(const char* cformat, va_list ap) { ...:4760 case 'g': ...:4780 subst = locale.d()->doubleToString(d, precision, form, width, flags); qt4-x11-4.4.0/src/corelib/tools/qlocale.cpp:3601 QString QLocalePrivate::doubleToString(double d, int precision, DoubleForm form, int width, unsigned flags) const { ...:3707 num_str = decimalForm(digits, decpt, precision, mode, always_show_decpt, flags & ThousandsGroup, *this); qt4-x11-4.4.0/src/corelib/tools/qlocale.cpp:3304 static QString &decimalForm(QString &digits, int decpt, uint precision, PrecisionMode pm, bool always_show_decpt, bool thousands_group, const QLocalePrivate &locale) { ...:3333 digits.insert(decpt, locale.decimal()); I'll also attach my short test program "dom.cc" to be compiled with c++ -I/usr/include/qt4 -lQtXml -o dom dom.cc #include <Qt/qdom.h> #include <Qt/qlocale.h> #include <iostream> #include <locale.h> int main(int argc, char **argv, char **env) { double value = 3.1415 + argc; setlocale(LC_ALL, ""); QLocale::setDefault( QLocale::system() ); QString x; char buf[256]; int count = qsnprintf(buf, sizeof(buf), "%.16g", value); if (count > 0) { x = QString::fromLatin1(buf, count); std::cout << qPrintable(x) << std::endl; } x.setNum(value); // Fallback std::cout << qPrintable(x) << std::endl; QDomDocument doc( "root" ); QDomElement root = doc.createElement( "root" ); root.setAttribute( "double", value ); doc.appendChild( root ); QString xml = doc.toString(); std::cout << qPrintable(xml) << std::endl; return 0; } LANG=en_US.UTF-8 ./dom 4.141500000000001 4.1415 <!DOCTYPE root> <root double="4.141500000000001" /> LANG=de_DE.UTF-8 ./dom 4,141500000000001 4.1415 <!DOCTYPE root> <root double="4,141500000000001" /> > On this system I'm running qt 4.3. Could you try if the bug also > occurs with Qt 4.3 instead of 4.4? I currently don't have access to any machine running Qt 4.3, but if I find one I'll send another mail with the output of my test programm. BYtE Philipp -- Philipp Matthias Hahn <[EMAIL PROTECTED]> GPG/PGP: 9A540E39 @ keyrings.debian.org -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]