From 9c79cf716251da7cbe20cae65d573681b341d642 Mon Sep 17 00:00:00 2001 From: Eric Fischer Date: Wed, 31 Oct 2018 14:25:25 -0700 Subject: [PATCH] Warn in tile-join if tilesets being joined have different maxzooms --- CHANGELOG.md | 4 ++++ tile-join.cpp | 9 ++++++++- version.hpp | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 908a59d..fc46ab8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.32.2 + +* Warn in tile-join if tilesets being joined have inconsistent maxzooms + ## 1.32.1 * Fix null pointer crash when reading filter output that does not diff --git a/tile-join.cpp b/tile-join.cpp index 177fc5f..2422766 100644 --- a/tile-join.cpp +++ b/tile-join.cpp @@ -363,6 +363,7 @@ struct reader { std::vector dirtiles; std::string dirbase; + std::string name; sqlite3 *db = NULL; sqlite3_stmt *stmt = NULL; @@ -400,8 +401,9 @@ struct reader { struct reader *begin_reading(char *fname) { struct reader *r = new reader; - struct stat st; + r->name = fname; + struct stat st; if (stat(fname, &st) == 0 && (st.st_mode & S_IFDIR) != 0) { r->db = NULL; r->stmt = NULL; @@ -735,6 +737,11 @@ void decode(struct reader *readers, std::map &layer if (sqlite3_prepare_v2(db, "SELECT value from metadata where name = 'maxzoom'", -1, &r->stmt, NULL) == SQLITE_OK) { if (sqlite3_step(r->stmt) == SQLITE_ROW) { int maxz = min(sqlite3_column_int(r->stmt, 0), maxzoom); + + if (st->maxzoom >= 0 && maxz != st->maxzoom) { + fprintf(stderr, "Warning: mismatched maxzooms: %d in %s vs previous %d\n", maxz, r->name.c_str(), st->maxzoom); + } + st->maxzoom = max(st->maxzoom, maxz); } sqlite3_finalize(r->stmt); diff --git a/version.hpp b/version.hpp index bff7300..51b494b 100644 --- a/version.hpp +++ b/version.hpp @@ -1,6 +1,6 @@ #ifndef VERSION_HPP #define VERSION_HPP -#define VERSION "v1.32.1" +#define VERSION "v1.32.2" #endif