diff --git a/geojson.c b/geojson.c index 70cd547..6843352 100644 --- a/geojson.c +++ b/geojson.c @@ -387,7 +387,7 @@ void read_json(FILE *f, const char *fname, const char *layername, int maxzoom, i } json_object *properties = json_hash_get(j, "properties"); - if (properties == NULL || properties->type != JSON_HASH) { + if (properties == NULL || (properties->type != JSON_HASH && properties->type != JSON_NULL)) { fprintf(stderr, "%s:%d: feature without properties hash\n", fname, jp->line); json_free(j); continue; @@ -420,13 +420,18 @@ void read_json(FILE *f, const char *fname, const char *layername, int maxzoom, i parse_geometry(t, coordinates, bbox, &fpos, metafile, VT_MOVETO, fname, jp); serialize_byte(metafile, VT_END, &fpos, fname, jp); - char *metakey[properties->length]; - char *metaval[properties->length]; - int metatype[properties->length]; + int nprop = 0; + if (properties->type == JSON_HASH) { + nprop = properties->length; + } + + char *metakey[nprop]; + char *metaval[nprop]; + int metatype[nprop]; int m = 0; int i; - for (i = 0; i < properties->length; i++) { + for (i = 0; i < nprop; i++) { if (properties->keys[i]->type == JSON_STRING) { if (exclude_all) { if (!is_pooled(include, properties->keys[i]->string, VT_STRING)) {