diff options
Diffstat (limited to 'src/mongo/bson/json.cpp')
-rw-r--r-- | src/mongo/bson/json.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/mongo/bson/json.cpp b/src/mongo/bson/json.cpp index 8f6587a6eff..a2bc9872c79 100644 --- a/src/mongo/bson/json.cpp +++ b/src/mongo/bson/json.cpp @@ -993,10 +993,13 @@ Status JParse::regexOpt(std::string* result) { Status JParse::regexOptCheck(StringData opt) { MONGO_JSON_DEBUG("opt: " << opt); std::size_t i; + std::string availableOptions = JOPTIONS; for (i = 0; i < opt.size(); i++) { - if (!match(opt[i], JOPTIONS)) { + std::size_t availIndex = availableOptions.find(opt[i]); + if (availIndex == std::string::npos) { return parseError(string("Bad regex option: ") + opt[i]); } + availableOptions.erase(availIndex, 1); } return Status::OK(); } |