Le samedi 28 avril 2012 14:09:35, Mateusz Loskot a écrit : > Even, Folks, > > I noticed your commit r18545 in json-c version maintained in GDAL tree [1]. > > It says: "bug fix submitted to jsonc maintener now" > I don't know the details who, how and where this was submitted to the > upstream,
Well, I submitted it, but I don't recall if I followed if it was accepted or > > I do not use MinGW, but could you or anyone who is concerned about MinGW > support try the following test and report any errors occurred? > > https://gist.github.com/2518402 I've tried with 2 mingw versions, and with both the %lf %lg don't work well (although the output is a bit different) $ gcc --version gcc.exe (GCC) 3.4.5 (mingw-vista special r3) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ ./test.exe n1=-1375090688, n2=302 dnum=1.3e+012, dden=1.99989e+012, dpercent=65.00 (l) ldnum=-3.07944e-196, ldden=-9.36335e-097, ldpercent=0.00 (L) ldnum=-3.07944e-196, ldden=-9.36335e-097, ldpercent=0.00 $ /e/mingw-new/bin/gcc --version gcc.exe (GCC) 4.5.0 Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ PATH=/e/MinGW-new/bin:$PATH gcc test.c -O2 -Wall -o test.exe test.c: In function 'main': test.c:16:1: warning: format '%ld' expects type 'long int', but argument 2 has type 'int64_t' test.c:16:1: warning: format '%ld' expects type 'long int', but argument 3 has type 'int64_t' test.c:18:1: warning: format '%lg' expects type 'double', but argument 2 has type 'long double' test.c:18:1: warning: format '%lg' expects type 'double', but argument 3 has type 'long double' test.c:18:1: warning: format '%4.2lf' expects type 'double', but argument 4 has type 'long double' test.c:19:1: warning: unknown conversion type character 'L' in format test.c:19:1: warning: unknown conversion type character 'L' in format test.c:19:1: warning: unknown conversion type character 'L' in format test.c:19:1: warning: too many arguments for format $ ./test.exe n1=-1375090688, n2=302 dnum=1.3e+012, dden=1.99989e+012, dpercent=65.00 (l) ldnum=-3.07944e-196, ldden=-9.36336e-097, ldpercent=65.00 (L) ldnum=-3.07944e-196, ldden=-9.36336e-097, ldpercent=65.00 My conclusion is that %lf or %lg is unnecessary (and unspecified by the standards) when passing a double. When you specify %f in printf, the compiler naturally expects a double (and if you provide a float, due to the fact that it is a varags, it is automatically promoted to double). There is often confusion, because in sscanf, %f expects a pointer to a float, whereas %lf expects a pointer to a double. But printf is different... > > (copy at http://codepad.org/users/mloskot) > > The json-c has been updated and improved significantly between 0.9 and > the upcoming 1.0. > My aim is to push as many GDAL-derived json-c fixes as possible to the > json-c upstream, then update json-c in GDAL with the upstream. > > [1] > http://trac.osgeo.org/gdal/changeset/18545/trunk/gdal/ogr/ogrsf_frmts/geoj > son/jsonc?rev=18545 [2] > https://groups.google.com/forum/?fromgroups#!topic/json-c/2w3zoKbPwJU > > Best regards, _______________________________________________ gdal-dev mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/gdal-dev
