@@ -125,12 +125,10 @@ WARN_UNUSED really_inline error_code structural_parser::parse(T &builder) noexce
125
125
switch (*value) {
126
126
case ' {' : {
127
127
if (empty_object (builder)) { goto document_end; }
128
- SIMDJSON_TRY ( start_object (builder) );
129
128
goto object_begin;
130
129
}
131
130
case ' [' : {
132
131
if (empty_array (builder)) { goto document_end; }
133
- SIMDJSON_TRY ( start_array (builder) );
134
132
// Make sure the outer array is closed before continuing; otherwise, there are ways we could get
135
133
// into memory corruption. See https://github.com/simdjson/simdjson/issues/906
136
134
if (!STREAMING) {
@@ -151,6 +149,7 @@ WARN_UNUSED really_inline error_code structural_parser::parse(T &builder) noexce
151
149
// Object parser states
152
150
//
153
151
object_begin: {
152
+ SIMDJSON_TRY ( start_object (builder) );
154
153
const uint8_t *key = advance ();
155
154
if (*key != ' "' ) {
156
155
log_error (" Object does not start with a key" );
@@ -167,12 +166,10 @@ object_field: {
167
166
switch (*value) {
168
167
case ' {' : {
169
168
if (empty_object (builder)) { break ; };
170
- SIMDJSON_TRY ( start_object (builder) );
171
169
goto object_begin;
172
170
}
173
171
case ' [' : {
174
172
if (empty_array (builder)) { break ; };
175
- SIMDJSON_TRY ( start_array (builder) );
176
173
goto array_begin;
177
174
}
178
175
default : {
@@ -210,6 +207,7 @@ scope_end: {
210
207
// Array parser states
211
208
//
212
209
array_begin: {
210
+ SIMDJSON_TRY ( start_array (builder) );
213
211
builder.increment_count (*this );
214
212
} // array_begin:
215
213
@@ -218,12 +216,10 @@ array_value: {
218
216
switch (*value) {
219
217
case ' {' : {
220
218
if (empty_object (builder)) { break ; };
221
- SIMDJSON_TRY ( start_object (builder) );
222
219
goto object_begin;
223
220
}
224
221
case ' [' : {
225
222
if (empty_array (builder)) { break ; };
226
- SIMDJSON_TRY ( start_array (builder) );
227
223
goto array_begin;
228
224
}
229
225
default : {
0 commit comments