forked from weaselab/weaseljson
Skip string and go directly to string2 from object3
This commit is contained in:
+14
-2
@@ -446,13 +446,25 @@ inline PRESERVE_NONE WeaselJsonStatus n_object3(Parser3 *self, char *buf,
|
|||||||
assert(!self->inKey);
|
assert(!self->inKey);
|
||||||
self->inKey = true;
|
self->inKey = true;
|
||||||
self->pop();
|
self->pop();
|
||||||
if (auto s = self->push({N_STRING, T_COLON, N_VALUE, N_OBJECT3})) {
|
if (auto s = skipWhitespace(buf, bufEnd)) {
|
||||||
|
if (auto s2 = self->push({N_STRING, T_COLON, N_VALUE, N_OBJECT3})) {
|
||||||
|
return s2;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
if (*buf != '"') [[unlikely]] {
|
||||||
|
return WeaselJson_REJECT;
|
||||||
|
}
|
||||||
|
++buf;
|
||||||
|
self->dataBegin = self->writeBuf = buf;
|
||||||
|
self->strDfa.reset();
|
||||||
|
if (auto s = self->push({N_STRING2, T_COLON, N_VALUE, N_OBJECT3})) {
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
if (buf == bufEnd) {
|
if (buf == bufEnd) {
|
||||||
return WeaselJson_AGAIN;
|
return WeaselJson_AGAIN;
|
||||||
}
|
}
|
||||||
MUSTTAIL return n_string(self, buf, bufEnd);
|
MUSTTAIL return n_string2(self, buf, bufEnd);
|
||||||
default:
|
default:
|
||||||
[[unlikely]] return WeaselJson_REJECT;
|
[[unlikely]] return WeaselJson_REJECT;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user