From df6362d45060d7fde9772d21f23af969d039e920 Mon Sep 17 00:00:00 2001 From: Milo Yip Date: Fri, 9 Jun 2017 10:16:24 +0800 Subject: [PATCH] Fix patternProperties & additionalProperties lead to ASSERT Fix #825 --- include/rapidjson/schema.h | 4 +++- test/unittest/schematest.cpp | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/rapidjson/schema.h b/include/rapidjson/schema.h index 348dd37..dd57edb 100644 --- a/include/rapidjson/schema.h +++ b/include/rapidjson/schema.h @@ -783,8 +783,10 @@ public: if (patternProperties_) { context.patternPropertiesSchemaCount = 0; for (SizeType i = 0; i < patternPropertyCount_; i++) - if (patternProperties_[i].pattern && IsPatternMatch(patternProperties_[i].pattern, str, len)) + if (patternProperties_[i].pattern && IsPatternMatch(patternProperties_[i].pattern, str, len)) { context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = patternProperties_[i].schema; + context.valueSchema = typeless_; + } } SizeType index; diff --git a/test/unittest/schematest.cpp b/test/unittest/schematest.cpp index 30b3260..e79fec2 100644 --- a/test/unittest/schematest.cpp +++ b/test/unittest/schematest.cpp @@ -1322,6 +1322,13 @@ TEST(SchemaValidator, Issue728_AllOfRef) { VALIDATE(s, "{\"key1\": \"abc\", \"key2\": \"def\"}", true); } +TEST(SchemaValidator, Issue825) { + Document sd; + sd.Parse("{\"type\": \"object\", \"additionalProperties\": false, \"patternProperties\": {\"^i\": { \"type\": \"string\" } } }"); + SchemaDocument s(sd); + VALIDATE(s, "{ \"item\": \"hello\" }", true); +} + #ifdef __clang__ RAPIDJSON_DIAG_POP #endif