Port fix for "at" expression off-by-1 error (#11375)
* Port fix for "at" expression off-by-1 error Refs https://github.com/mapbox/mapbox-gl-js/pull/6269 * Consistency * Add ignores for symbol positiong differences in real-world tests
This commit is contained in:
Submodule mapbox-gl-js updated: f87d7e3401...703bb35eb3
@@ -25,6 +25,9 @@
|
||||
"render-tests/geojson/inline-polygon-symbol": "behavior needs reconciliation with gl-js",
|
||||
"render-tests/mixed-zoom/z10-z11": "https://github.com/mapbox/mapbox-gl-native/issues/10397",
|
||||
"render-tests/raster-masking/overlapping-zoom": "https://github.com/mapbox/mapbox-gl-native/issues/10195",
|
||||
"render-tests/real-world/bangkok": "https://github.com/mapbox/mapbox-gl-native/issues/10412",
|
||||
"render-tests/real-world/chicago": "https://github.com/mapbox/mapbox-gl-native/issues/10412",
|
||||
"render-tests/real-world/sanfrancisco": "https://github.com/mapbox/mapbox-gl-native/issues/10412",
|
||||
"render-tests/regressions/mapbox-gl-js#2305": "https://github.com/mapbox/mapbox-gl-native/issues/6927",
|
||||
"render-tests/regressions/mapbox-gl-js#2467": "https://github.com/mapbox/mapbox-gl-native/issues/10619",
|
||||
"render-tests/regressions/mapbox-gl-js#2762": "https://github.com/mapbox/mapbox-gl-native/issues/10619",
|
||||
|
||||
@@ -19,15 +19,21 @@ EvaluationResult At::evaluate(const EvaluationContext& params) const {
|
||||
const auto i = evaluatedIndex->get<double>();
|
||||
const auto inputArray = evaluatedInput->get<std::vector<Value>>();
|
||||
|
||||
if (i < 0 || i >= inputArray.size()) {
|
||||
if (i < 0) {
|
||||
return EvaluationError {
|
||||
"Array index out of bounds: " + stringify(i) +
|
||||
" > " + util::toString(inputArray.size()) + "."
|
||||
"Array index out of bounds: " + util::toString(i) + " < 0."
|
||||
};
|
||||
}
|
||||
|
||||
if (i >= inputArray.size()) {
|
||||
return EvaluationError {
|
||||
"Array index out of bounds: " + util::toString(i) +
|
||||
" > " + util::toString(inputArray.size() - 1) + "."
|
||||
};
|
||||
}
|
||||
if (i != std::floor(i)) {
|
||||
return EvaluationError {
|
||||
"Array index must be an integer, but found " + stringify(i) + " instead."
|
||||
"Array index must be an integer, but found " + util::toString(i) + " instead."
|
||||
};
|
||||
}
|
||||
return inputArray[static_cast<std::size_t>(i)];
|
||||
|
||||
Reference in New Issue
Block a user