From 737ae44dd7197bc90dd6ebf9d7b55454ce95b165 Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Wed, 27 Apr 2016 11:13:15 -0700 Subject: [PATCH] Fix warnings about questionable numeric operations --- geometry.cc | 4 ++-- projection.c | 4 ++-- tile.cc | 5 ++++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/geometry.cc b/geometry.cc index ea26bf5..687b00c 100644 --- a/geometry.cc +++ b/geometry.cc @@ -44,8 +44,8 @@ drawvec decode_geometry(FILE *meta, long long *geompos, int z, unsigned tx, unsi deserialize_long_long_io(meta, &dx, geompos); deserialize_long_long_io(meta, &dy, geompos); - wx += dx << geometry_scale; - wy += dy << geometry_scale; + wx += dx * (1 << geometry_scale); + wy += dy * (1 << geometry_scale); long long wwx = wx; long long wwy = wy; diff --git a/projection.c b/projection.c index ccd4f00..d1ca865 100644 --- a/projection.c +++ b/projection.c @@ -38,11 +38,11 @@ void tile2latlon(long long x, long long y, int zoom, double *lat, double *lon) { } unsigned long long encode(unsigned int wx, unsigned int wy) { - long long out = 0; + unsigned long long out = 0; int i; for (i = 0; i < 32; i++) { - long long v = ((wx >> (32 - (i + 1))) & 1) << 1; + unsigned long long v = ((wx >> (32 - (i + 1))) & 1) << 1; v |= (wy >> (32 - (i + 1))) & 1; v = v << (64 - 2 * (i + 1)); diff --git a/tile.cc b/tile.cc index 223034f..9673909 100644 --- a/tile.cc +++ b/tile.cc @@ -866,7 +866,10 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s } std::vector out; - for (size_t x = 0; x < features[j].size(); x++) { + if (features[j].size() > 0) { + out.push_back(features[j][0]); + } + for (size_t x = 1; x < features[j].size(); x++) { size_t y = out.size() - 1; #if 0