diff --git a/src/mbgl/map/vector_tile.cpp b/src/mbgl/map/vector_tile.cpp index 72142f0a0..235a4151d 100644 --- a/src/mbgl/map/vector_tile.cpp +++ b/src/mbgl/map/vector_tile.cpp @@ -179,13 +179,14 @@ template bool mbgl::evaluate(const FilterExpression&, const GeometryTileTagExtra util::ptr FilteredVectorTileLayer::nextMatchingFeature() { while (feature_pbf.next(2)) { - pbf current_feature_pbf = feature_pbf.message(); + pbf matching_feature_pbf = feature_pbf.message(); + pbf current_feature_pbf = matching_feature_pbf; GeometryTileTagExtractor extractor(layer); while (current_feature_pbf.next()) { if (current_feature_pbf.tag == 2) { // tags - extractor.setTags(current_feature_pbf); + extractor.setTags(current_feature_pbf.message()); } else if (current_feature_pbf.tag == 3) { // geometry type extractor.setType(GeometryFeatureType(current_feature_pbf.varint())); } else { @@ -194,7 +195,7 @@ util::ptr FilteredVectorTileLayer::nextMatchingFeature() { } if (evaluate(filterExpression, extractor)) { - return std::move(std::make_shared(current_feature_pbf.message(), layer)); + return std::move(std::make_shared(matching_feature_pbf, layer)); } }