From 9ecb0997effb006e88c25d6fbca2570c8ab51adc Mon Sep 17 00:00:00 2001 From: Vladimir Kondrashov Date: Mon, 13 Aug 2018 11:25:33 -0700 Subject: [PATCH] [core] Fix out of range exception for string compare --- platform/default/asset_file_source.cpp | 2 +- platform/default/local_file_source.cpp | 2 +- src/mbgl/style/expression/is_constant.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/platform/default/asset_file_source.cpp b/platform/default/asset_file_source.cpp index 3063bf88a..7988654ae 100644 --- a/platform/default/asset_file_source.cpp +++ b/platform/default/asset_file_source.cpp @@ -75,7 +75,7 @@ std::unique_ptr AssetFileSource::request(const Resource& resource, } bool AssetFileSource::acceptsURL(const std::string& url) { - return std::equal(assetProtocol.begin(), assetProtocol.end(), url.begin()); + return 0 == url.rfind(assetProtocol, 0); } } // namespace mbgl diff --git a/platform/default/local_file_source.cpp b/platform/default/local_file_source.cpp index 0635e86d8..1b7b7b927 100644 --- a/platform/default/local_file_source.cpp +++ b/platform/default/local_file_source.cpp @@ -75,7 +75,7 @@ std::unique_ptr LocalFileSource::request(const Resource& resource, } bool LocalFileSource::acceptsURL(const std::string& url) { - return std::equal(fileProtocol.begin(), fileProtocol.end(), url.begin()); + return 0 == url.rfind(fileProtocol, 0); } } // namespace mbgl diff --git a/src/mbgl/style/expression/is_constant.cpp b/src/mbgl/style/expression/is_constant.cpp index 69f27f6fe..3b20f49a8 100644 --- a/src/mbgl/style/expression/is_constant.cpp +++ b/src/mbgl/style/expression/is_constant.cpp @@ -17,7 +17,7 @@ bool isFeatureConstant(const Expression& expression) { return false; } else if (name == "has" && parameterCount && *parameterCount == 1) { return false; - } else if (std::equal(std::begin(filter), std::end(filter) - 1, name.begin())) { + } else if (0 == name.rfind(filter, 0)) { // Legacy filters begin with "filter-" and are never constant. return false; } else if ( @@ -28,7 +28,7 @@ bool isFeatureConstant(const Expression& expression) { return false; } } - + if (expression.getKind() == Kind::CollatorExpression) { // Although the results of a Collator expression with fixed arguments // generally shouldn't change between executions, we can't serialize them