Crash JsonReader.h on Deserialize of invalid string starting with either '}' or ']'

Running either of the following code snippets will cause a crash:

FString message = "}";
TSharedPtr<FJsonObject> pJsonObject;
FJsonSerializer::Deserialize(TJsonReaderFactory<>::Create(message), pJsonObject);

// or

FString message = "]";
TSharedPtr<FJsonObject> pJsonObject;
FJsonSerializer::Deserialize(TJsonReaderFactory<>::Create(message), pJsonObject);

The crash occures in JsonReader.h in the “bool NextToken( EJsonToken& OutToken )” when the ParseState object is poped on an empty object around line 410 or 418.

				...
				switch (Char)
				{
				case CharType('{'):
					OutToken = EJsonToken::CurlyOpen; ParseState.Push( EJson::Object );
					return true;

				case CharType('}'):
					OutToken = EJsonToken::CurlyClose; ParseState.Pop();   // Here 
					return true;

				case CharType('['):
					OutToken = EJsonToken::SquareOpen; ParseState.Push( EJson::Array );
					return true;

				case CharType(']'):
					OutToken = EJsonToken::SquareClose; ParseState.Pop(); // Or Here
					return true;
				...