From d64328ac3575ff657a610e3dc2a44a8b0dfec1d4 Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Fri, 10 Apr 2015 13:03:11 -0700 Subject: [PATCH] Fix crash when encoding boolean properties. --- geojson.c | 2 +- mbtiles.c | 2 ++ tile.cc | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/geojson.c b/geojson.c index 86b1b2eb..304f0cbd 100644 --- a/geojson.c +++ b/geojson.c @@ -544,7 +544,7 @@ int read_json(int argc, char **argv, char *fname, const char *layername, int max m++; } else if (properties->values[i] != NULL && (properties->values[i]->type == JSON_TRUE || properties->values[i]->type == JSON_FALSE)) { metatype[m] = VT_BOOLEAN; - metaval[m] = properties->values[i]->string; + metaval[m] = properties->values[i]->type == JSON_TRUE ? "true" : "false"; m++; } else if (properties->values[i] != NULL && (properties->values[i]->type == JSON_NULL)) { ; diff --git a/mbtiles.c b/mbtiles.c index ec13ef3e..acf670ec 100644 --- a/mbtiles.c +++ b/mbtiles.c @@ -193,6 +193,8 @@ void mbtiles_write_metadata(sqlite3 *outdb, const char *fname, char **layername, if (pv->type == VT_NUMBER) { aprintf(&buf, "\": \"Number\""); + } else if (pv->type == VT_BOOLEAN) { + aprintf(&buf, "\": \"Boolean\""); } else { aprintf(&buf, "\": \"String\""); } diff --git a/tile.cc b/tile.cc index c2412ba5..f44e1c53 100644 --- a/tile.cc +++ b/tile.cc @@ -261,6 +261,8 @@ mapnik::vector::tile create_tile(char **layernames, int line_detail, std::vector if (pv->type == VT_NUMBER) { tv->set_double_value(atof(pv->s)); + } else if (pv->type == VT_BOOLEAN) { + tv->set_bool_value(pv->s[0] == 't'); } else { tv->set_string_value(pv->s); }