mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Fixed parsing of comments (issue #421)
This commit is contained in:
		| @@ -1,6 +1,11 @@ | ||||
| ArduinoJson: change log | ||||
| ======================= | ||||
|  | ||||
| HEAD | ||||
| ---- | ||||
|  | ||||
| * Fixed parsing of comments (issue #421) | ||||
|  | ||||
| v5.8.1 | ||||
| ------ | ||||
|  | ||||
|   | ||||
| @@ -27,39 +27,27 @@ void skipSpacesAndComments(TInput& input) { | ||||
|           // C-style block comment | ||||
|           case '*': | ||||
|             input.move();  // skip '/' | ||||
|             input.move();  // skip '*' | ||||
|             // no need to skip '*' | ||||
|             for (;;) { | ||||
|               switch (input.current()) { | ||||
|                 case '\0': | ||||
|                   return; | ||||
|                 case '*': | ||||
|                   input.move();  // skip '*' | ||||
|                   if (input.current() == '/') { | ||||
|                     input.move();  // skip '/' | ||||
|                     return; | ||||
|                   } | ||||
|                   break; | ||||
|                 default: | ||||
|                   input.move(); | ||||
|               input.move(); | ||||
|               if (input.current() == '\0') return; | ||||
|               if (input.current() == '*' && input.next() == '/') { | ||||
|                 input.move();  // skip '*' | ||||
|                 input.move();  // skip '/' | ||||
|                 break; | ||||
|               } | ||||
|             } | ||||
|             break; | ||||
|  | ||||
|           // C++-style line comment | ||||
|           case '/': | ||||
|             input.move();  // skip '/' | ||||
|             // not need to skip "//" | ||||
|             for (;;) { | ||||
|               switch (input.current()) { | ||||
|                 case '\0': | ||||
|                   return; | ||||
|                 case '\n': | ||||
|                   input.move(); | ||||
|                   return; | ||||
|                 default: | ||||
|                   input.move(); | ||||
|               } | ||||
|               input.move(); | ||||
|               if (input.current() == '\0') return; | ||||
|               if (input.current() == '\n') break; | ||||
|             } | ||||
|             return; | ||||
|             break; | ||||
|  | ||||
|           // not a comment, just a '/' | ||||
|           default: | ||||
|   | ||||
| @@ -237,7 +237,7 @@ TEST_F(JsonParser_Array_Tests, StringWithUnterminatedEscapeSequence) { | ||||
| } | ||||
|  | ||||
| TEST_F(JsonParser_Array_Tests, CCommentBeforeOpeningBracket) { | ||||
|   whenInputIs("/*COMMENT*/[\"hello\"]"); | ||||
|   whenInputIs("/*COMMENT*/  [\"hello\"]"); | ||||
|  | ||||
|   parseMustSucceed(); | ||||
|   sizeMustBe(1); | ||||
| @@ -245,7 +245,7 @@ TEST_F(JsonParser_Array_Tests, CCommentBeforeOpeningBracket) { | ||||
| } | ||||
|  | ||||
| TEST_F(JsonParser_Array_Tests, CCommentAfterOpeningBracket) { | ||||
|   whenInputIs("[/*COMMENT*/\"hello\"]"); | ||||
|   whenInputIs("[/*COMMENT*/ \"hello\"]"); | ||||
|  | ||||
|   parseMustSucceed(); | ||||
|   sizeMustBe(1); | ||||
| @@ -278,7 +278,7 @@ TEST_F(JsonParser_Array_Tests, CCommentBeforeComma) { | ||||
| } | ||||
|  | ||||
| TEST_F(JsonParser_Array_Tests, CCommentAfterComma) { | ||||
|   whenInputIs("[\"hello\",/*COMMENT*/\"world\"]"); | ||||
|   whenInputIs("[\"hello\",/*COMMENT*/ \"world\"]"); | ||||
|  | ||||
|   parseMustSucceed(); | ||||
|   sizeMustBe(2); | ||||
| @@ -287,7 +287,7 @@ TEST_F(JsonParser_Array_Tests, CCommentAfterComma) { | ||||
| } | ||||
|  | ||||
| TEST_F(JsonParser_Array_Tests, CppCommentBeforeOpeningBracket) { | ||||
|   whenInputIs("//COMMENT\n[\"hello\"]"); | ||||
|   whenInputIs("//COMMENT\n\t[\"hello\"]"); | ||||
|  | ||||
|   parseMustSucceed(); | ||||
|   sizeMustBe(1); | ||||
| @@ -303,7 +303,7 @@ TEST_F(JsonParser_Array_Tests, CppCommentAfterOpeningBracket) { | ||||
| } | ||||
|  | ||||
| TEST_F(JsonParser_Array_Tests, CppCommentBeforeClosingBracket) { | ||||
|   whenInputIs("[\"hello\"//COMMENT\n]"); | ||||
|   whenInputIs("[\"hello\"//COMMENT\r\n]"); | ||||
|  | ||||
|   parseMustSucceed(); | ||||
|   sizeMustBe(1); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user