mirror of
				https://github.com/Tencent/rapidjson.git
				synced 2025-11-03 19:40:41 +01:00 
			
		
		
		
	Merge pull request #166 from spl/fix-memorystream-peek
Fix MemoryStream::Peek() and add test for fix
This commit is contained in:
		@@ -42,7 +42,7 @@ struct MemoryStream {
 | 
			
		||||
 | 
			
		||||
    MemoryStream(const Ch *src, size_t size) : src_(src), begin_(src), end_(src + size), size_(size) {}
 | 
			
		||||
 | 
			
		||||
    Ch Peek() const { return *src_; }
 | 
			
		||||
    Ch Peek() const { return (src_ == end_) ? '\0' : *src_; }
 | 
			
		||||
    Ch Take() { return (src_ == end_) ? '\0' : *src_++; }
 | 
			
		||||
    size_t Tell() const { return static_cast<size_t>(src_ - begin_); }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,6 +21,7 @@
 | 
			
		||||
#include "unittest.h"
 | 
			
		||||
 | 
			
		||||
#include "rapidjson/reader.h"
 | 
			
		||||
#include "rapidjson/memorystream.h"
 | 
			
		||||
 | 
			
		||||
using namespace rapidjson;
 | 
			
		||||
 | 
			
		||||
@@ -674,6 +675,15 @@ TEST(Reader, ParseObject_Error) {
 | 
			
		||||
 | 
			
		||||
    // Must be a comma or '}' after an object member
 | 
			
		||||
    TEST_ERROR(kParseErrorObjectMissCommaOrCurlyBracket, "{\"a\":1]");
 | 
			
		||||
 | 
			
		||||
    // This tests that MemoryStream is checking the length in Peek().
 | 
			
		||||
    {
 | 
			
		||||
        MemoryStream ms("{\"a\"", 1);
 | 
			
		||||
        BaseReaderHandler<> h;
 | 
			
		||||
        Reader reader;
 | 
			
		||||
        EXPECT_FALSE(reader.Parse<kParseStopWhenDoneFlag>(ms, h));
 | 
			
		||||
        EXPECT_EQ(kParseErrorObjectMissName, reader.GetParseErrorCode());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#undef TEST_ERROR
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user