diff --git a/geometry.cpp b/geometry.cpp index e453f8e..88b3f7d 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -767,7 +767,7 @@ drawvec simple_clip_poly(drawvec &geom, long long minx, long long miny, long lon } drawvec simple_clip_poly(drawvec &geom, int z, int detail, int buffer) { - long long area = area = 1LL << (32 - z); + long long area = 1LL << (32 - z); long long clip_buffer = buffer * area / 256; return simple_clip_poly(geom, -clip_buffer, -clip_buffer, area + clip_buffer, area + clip_buffer); diff --git a/geometry.hpp b/geometry.hpp index a25f0b9..0d2b378 100644 --- a/geometry.hpp +++ b/geometry.hpp @@ -12,10 +12,10 @@ #define VT_BOOLEAN 7 struct draw { - signed char op; long long x; long long y; - int necessary; + signed char op; + signed char necessary; draw(int nop, long long nx, long long ny) { this->op = nop; diff --git a/mvt.hpp b/mvt.hpp index ce6361d..386fae1 100644 --- a/mvt.hpp +++ b/mvt.hpp @@ -8,9 +8,9 @@ enum mvt_operation { }; struct mvt_geometry { + int x; + int y; int /* mvt_operation */ op; - long long x; - long long y; mvt_geometry(int op, long long x, long long y); }; @@ -23,8 +23,8 @@ enum mvt_geometry_type { struct mvt_feature { std::vector tags; - int /* mvt_geometry_type */ type; std::vector geometry; + int /* mvt_geometry_type */ type; }; enum mvt_value_type { diff --git a/tile.cpp b/tile.cpp index 9df726c..885a57f 100644 --- a/tile.cpp +++ b/tile.cpp @@ -855,8 +855,7 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s } for (size_t i = 0; i < partials.size(); i++) { - std::vector pgeoms = partials[i].geoms; - partials[i].geoms.clear(); // avoid keeping two copies in memory + std::vector &pgeoms = partials[i].geoms; long long layer = partials[i].layer; signed char t = partials[i].t; long long original_seq = partials[i].original_seq; @@ -871,6 +870,7 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s c.index = partials[i].index; c.index2 = partials[i].index2; c.geom = pgeoms[j]; + pgeoms[j].clear(); c.coalesced = false; c.original_seq = original_seq; c.m = partials[i].m; @@ -882,6 +882,8 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s } } + partials.clear(); + int j; for (j = 0; j < child_shards; j++) { if (within[j]) { @@ -966,6 +968,7 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s feature.type = features[k][x].type; feature.geometry = to_feature(features[k][x].geom); count += features[k][x].geom.size(); + features[k][x].geom.clear(); decode_meta(features[k][x].m, &features[k][x].meta, features[k][x].stringpool, layer, feature); layer.features.push_back(feature);