From 48567280227e74349e2e2c90cb4e0eb5d623bd31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20Ka=CC=88fer?= Date: Wed, 2 Jul 2014 17:32:29 +0200 Subject: [PATCH] parse function stops according to spec --- src/style/style_parser.cpp | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/style/style_parser.cpp b/src/style/style_parser.cpp index 22f71eb7b..5c5c01817 100644 --- a/src/style/style_parser.cpp +++ b/src/style/style_parser.cpp @@ -285,25 +285,20 @@ std::tuple> StyleParser::parseFunction(JSVal value) { } std::vector> stops; - for (rapidjson::SizeType i = 0; i < value.Size(); ++i) { - JSVal stop = value[i]; - if (stop.IsObject()) { - if (!stop.HasMember("z")) { - fprintf(stderr, "[WARNING] stop must have zoom level specification\n"); - return false; - } - if (!stop.HasMember("val")) { - fprintf(stderr, "[WARNING] stop must have value specification\n"); - return false; + for (rapidjson::SizeType i = 0; i < value_stops.Size(); ++i) { + JSVal stop = value_stops[i]; + if (stop.IsArray()) { + if (stop.Size() != 2) { + fprintf(stderr, "[WARNING] stop must have zoom level and value specification\n"); } - JSVal z = stop["z"]; + JSVal z = stop[rapidjson::SizeType(0)]; if (!z.IsNumber()) { fprintf(stderr, "[WARNING] zoom level in stop must be a number\n"); return false; } - stops.emplace_back(z.GetDouble(), parseFunctionArgument(stop["val"])); + stops.emplace_back(z.GetDouble(), parseFunctionArgument(stop[rapidjson::SizeType(1)])); } else { fprintf(stderr, "[WARNING] function argument must be a numeric value\n"); return false;