c = in.get();
++pos;
}
+ if (c == EOF) {
+ throwJSONError("Unterminated string", file, line, pos);
+ }
return (ss.str());
}
ElementPtr list = Element::createList();
ConstElementPtr cur_list_element;
- skip_chars(in, " \t\n", line, pos);
+ skip_chars(in, " \t\n\r\b", line, pos);
while (c != EOF && c != ']') {
if (in.peek() != ']') {
cur_list_element = Element::fromJSON(in, file, line, pos);
int& pos)
{
ElementPtr map = Element::createMap();
- skip_chars(in, " \t\n", line, pos);
+ skip_chars(in, " \t\n\r\b", line, pos);
char c = in.peek();
if (c == EOF) {
throwJSONError(std::string("Unterminated map, <string> or } expected"), file, line, pos);
char c = 0;
ElementPtr element;
bool el_read = false;
- skip_chars(in, " \n\t", line, pos);
+ skip_chars(in, " \n\t\r\b", line, pos);
while (c != EOF && !el_read) {
c = in.get();
pos++;
// Bad string
EXPECT_THROW(Element::fromJSON("hello\"foobar\""), JSONError);
// A whitespace test
- EXPECT_NO_THROW(Element::fromJSON(" \n \r \t \n \n \t"));
+ EXPECT_NO_THROW(Element::fromJSON("\" \n \r \t \n \n \t\""));
+ // Whitespace outside of json element
+ EXPECT_NO_THROW(Element::fromJSON(" \n \t \r \b \"\" \n \t \r \b"));
+ EXPECT_NO_THROW(Element::fromJSON("{ \n \r \t \b }"));
+ EXPECT_NO_THROW(Element::fromJSON("[ \n \r \t \b ]"));
}
TEST(Element, ListElement) {