From 88b9750959c14224877ec11c71e91b7c0be62ec3 Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Fri, 21 Aug 2015 10:33:57 -0700 Subject: [PATCH] Fix a bunch of compiler warnings --- tile-join.cc | 52 +++++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/tile-join.cc b/tile-join.cc index 7f0d1be4..84822d78 100644 --- a/tile-join.cc +++ b/tile-join.cc @@ -1,6 +1,3 @@ -// for vasprintf() on Linux -#define _GNU_SOURCE - #include #include #include @@ -160,41 +157,46 @@ void handle(std::string message, int z, unsigned x, unsigned y, struct pool **fi } for (int t = 0; t + 1 < feat.tags_size(); t += 2) { - if (feat.tags(t) >= layer.keys_size() || feat.tags(t + 1) >= layer.values_size()) { - printf("out of range: %d=%d\n", feat.tags(t), feat.tags(t + 1)); - continue; - } - const char *key = layer.keys(feat.tags(t)).c_str(); mapnik::vector::tile_value const &val = layer.values(feat.tags(t + 1)); char *value; - int type; + int type = -1; if (val.has_string_value()) { value = strdup(val.string_value().c_str()); type = VT_STRING; } else if (val.has_int_value()) { - asprintf(&value, "%lld", val.int_value()); - type = VT_NUMBER; + if (asprintf(&value, "%lld", (long long) val.int_value()) >= 0) { + type = VT_NUMBER; + } } else if (val.has_double_value()) { - asprintf(&value, "%g", val.double_value()); - type = VT_NUMBER; + if (asprintf(&value, "%g", val.double_value()) >= 0) { + type = VT_NUMBER; + } } else if (val.has_float_value()) { - asprintf(&value, "%g", val.float_value()); - type = VT_NUMBER; + if (asprintf(&value, "%g", val.float_value()) >= 0) { + type = VT_NUMBER; + } } else if (val.has_bool_value()) { - asprintf(&value, "%s", val.bool_value() ? "true" : "false"); - type = VT_BOOLEAN; + if (asprintf(&value, "%s", val.bool_value() ? "true" : "false") >= 0) { + type = VT_BOOLEAN; + } } else if (val.has_sint_value()) { - asprintf(&value, "%lld", val.sint_value()); - type = VT_NUMBER; + if (asprintf(&value, "%lld", (long long) val.sint_value()) >= 0) { + type = VT_NUMBER; + } } else if (val.has_uint_value()) { - asprintf(&value, "%llu", val.uint_value()); - type = VT_NUMBER; + if (asprintf(&value, "%llu", (long long) val.uint_value()) >= 0) { + type = VT_NUMBER; + } } else { continue; } + if (type < 0) { + continue; + } + if (!is_pooled(&((*file_keys)[ll]), key, type)) { pool(&((*file_keys)[ll]), strdup(key), type); } @@ -222,7 +224,7 @@ void handle(std::string message, int z, unsigned x, unsigned y, struct pool **fi if (ii != mapping.end()) { std::vector fields = ii->second; - for (int i = 1; i < fields.size(); i++) { + for (unsigned i = 1; i < fields.size(); i++) { std::string joinkey = header[i]; std::string joinval = fields[i]; int type = VT_STRING; @@ -395,7 +397,7 @@ std::vector split(char *s) { std::string dequote(std::string s) { std::string out; - int i; + unsigned i; for (i = 0; i < s.size(); i++) { if (s[i] == '"') { if (i + 1 < s.size() && s[i + 1] == '"') { @@ -419,7 +421,7 @@ void readcsv(char *fn, std::vector &header, std::map &header, std::map >(line[0], line)); }