From feaea37aee1e8cf599abbc66519171572a228dfe Mon Sep 17 00:00:00 2001 From: Tristan Penman Date: Wed, 6 May 2015 07:02:27 +1000 Subject: [PATCH] Move JSON Pointer leading slash check out of recursive function --- include/valijson/internal/json_reference.hpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/include/valijson/internal/json_reference.hpp b/include/valijson/internal/json_reference.hpp index 8e277fe..ef49c1e 100644 --- a/include/valijson/internal/json_reference.hpp +++ b/include/valijson/internal/json_reference.hpp @@ -33,15 +33,6 @@ inline AdapterType resolveJsonPointer( const std::string::const_iterator jsonPointerEnd = jsonPointer.end(); - // Check for leading forward slash - if (std::find(jsonPointerItr, jsonPointerEnd, '/') == jsonPointerEnd) { - throw std::runtime_error( - "Expected '/' while parsing JSON Pointer."); - } - - // Proceed past leading slash - jsonPointerItr++; - // Recursion bottoms out here if (jsonPointerItr == jsonPointerEnd) { return node; @@ -149,7 +140,12 @@ inline AdapterType resolveJsonPointer( const AdapterType &rootNode, const std::string &jsonPointer) { - return ::resolveJsonPointer(rootNode, jsonPointer, jsonPointer.begin()); + if (jsonPointer.find("/") != 0) { + throw std::runtime_error( + "Expected leading '/' while parsing JSON Pointer."); + } + + return ::resolveJsonPointer(rootNode, jsonPointer, jsonPointer.begin() + 1); } } // namespace json_reference