From 9ec94a15ffa7c0678a7b85868c6109d5428ca501 Mon Sep 17 00:00:00 2001 From: Erica Fischer Date: Thu, 25 Jan 2024 15:55:18 -0800 Subject: [PATCH] Try limiting the depth of the search for duplicate attributes --- mvt.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/mvt.cpp b/mvt.cpp index 16481015..7589b4b3 100644 --- a/mvt.cpp +++ b/mvt.cpp @@ -115,11 +115,9 @@ bool mvt_tile::decode(const std::string &message, bool &was_compressed) { std::string src; if (is_compressed(message)) { - std::string uncompressed; - if (decompress(message, uncompressed) == 0) { + if (decompress(message, src) == 0) { exit(EXIT_MVT); } - src = uncompressed; was_compressed = true; } else { src = message; @@ -612,7 +610,10 @@ void mvt_layer::tag(mvt_feature &feature, std::string const &key, mvt_value cons if (ki == key_map.end()) { ko = keys.size(); keys.push_back(key); - key_map.emplace(key, ko); + + if (key_map.size() < 200) { + key_map.emplace(key, ko); + } } else { ko = ki->second; } @@ -620,7 +621,10 @@ void mvt_layer::tag(mvt_feature &feature, std::string const &key, mvt_value cons if (vi == value_map.end()) { vo = values.size(); values.push_back(value); - value_map.emplace(value, vo); + + if (value_map.size() < 200) { + value_map.emplace(value, vo); + } } else { vo = vi->second; }