sci-libs/gdal: Fix build w/ >=dev-libs/json-c-0.13

Thanks-to: Attila Tóth <atoth@atoth.sote.hu>
Closes: https://bugs.gentoo.org/641658
Package-Manager: Portage-2.3.19, Repoman-2.3.6
This commit is contained in:
Andreas Sturmlechner
2017-12-20 20:52:25 +01:00
parent 0180cb7a9e
commit 6c20ca938f
2 changed files with 85 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
Index: gdal/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp
===================================================================
--- a/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp (revision 41042)
+++ b/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp (revision 41043)
@@ -28,4 +28,6 @@
****************************************************************************/
+#define JSON_C_VER_013 (13 << 8)
+
#include "ogrgeojsonwriter.h"
#include "ogrgeojsonutils.h"
@@ -33,5 +35,9 @@
#include "ogrgeojsonreader.h"
#include <json.h> // JSON-C
+
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
#include <json_object_private.h>
+#endif
+
#include <printbuf.h>
#include <ogr_api.h>
@@ -1382,11 +1388,15 @@
// TODO(schwehr): Explain this casting.
const int nPrecision =
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
static_cast<int>(reinterpret_cast<GUIntptr_t>(jso->_userdata));
+#else
+ static_cast<int>(reinterpret_cast<GUIntptr_t>(json_object_get_userdata(jso)));
+#endif
char szBuffer[75] = {};
- OGRFormatDouble( szBuffer, sizeof(szBuffer), jso->o.c_double, '.',
+ OGRFormatDouble( szBuffer, sizeof(szBuffer), json_object_get_double(jso), '.',
(nPrecision < 0) ? 15 : nPrecision );
if( szBuffer[0] == 't' /*oobig */ )
{
- CPLsnprintf(szBuffer, sizeof(szBuffer), "%.18g", jso->o.c_double);
+ CPLsnprintf(szBuffer, sizeof(szBuffer), "%.18g", json_object_get_double(jso));
}
return printbuf_memappend(pb, szBuffer, static_cast<int>(strlen(szBuffer)));
@@ -1418,9 +1428,9 @@
char szBuffer[75] = {};
int nSize = 0;
- if( CPLIsNan(jso->o.c_double))
+ if( CPLIsNan(json_object_get_double(jso)))
nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), "NaN");
- else if( CPLIsInf(jso->o.c_double) )
- {
- if( jso->o.c_double > 0 )
+ else if( CPLIsInf(json_object_get_double(jso)) )
+ {
+ if( json_object_get_double(jso) > 0 )
nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), "Infinity");
else
@@ -1430,5 +1440,9 @@
{
char szFormatting[32] = {};
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
const int nSignificantFigures = (int) (GUIntptr_t) jso->_userdata;
+#else
+ const int nSignificantFigures = (int) (GUIntptr_t) json_object_get_userdata(jso);
+#endif
const int nInitialSignificantFigures =
nSignificantFigures >= 0 ? nSignificantFigures : 17;
@@ -1436,5 +1450,5 @@
"%%.%dg", nInitialSignificantFigures);
nSize = CPLsnprintf(szBuffer, sizeof(szBuffer),
- szFormatting, jso->o.c_double);
+ szFormatting, json_object_get_double(jso));
const char* pszDot = NULL;
if( nSize+2 < static_cast<int>(sizeof(szBuffer)) &&
@@ -1458,5 +1472,5 @@
"%%.%dg", nInitialSignificantFigures- i);
nSize = CPLsnprintf(szBuffer, sizeof(szBuffer),
- szFormatting, jso->o.c_double);
+ szFormatting, json_object_get_double(jso));
pszDot = strchr(szBuffer, '.');
if( pszDot != NULL &&
@@ -1473,5 +1487,5 @@
"%%.%dg", nInitialSignificantFigures);
nSize = CPLsnprintf(szBuffer, sizeof(szBuffer),
- szFormatting, jso->o.c_double);
+ szFormatting, json_object_get_double(jso));
if( nSize+2 < static_cast<int>(sizeof(szBuffer)) &&
strchr(szBuffer, '.') == NULL )

View File

@@ -71,6 +71,7 @@ REQUIRED_USE="mdb? ( java )
PATCHES=(
"${FILESDIR}/${PN}-2.2.3-soname.patch"
"${FILESDIR}/${PN}-2.2.3-json-c-0.13.patch" # bug 641658
)
src_prepare() {