Skip to content

Commit b4b266b

Browse files
committed
fix: some instances where JSONB_ERROR would return JSONB_END, reduce repetition
1 parent 0973400 commit b4b266b

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

json-build.h

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,6 @@ jsonb_push_object(jsonb *b, char buf[], size_t bufsize)
276276
if (b->top - b->stack >= JSONB_MAX_DEPTH)
277277
return JSONB_ERROR_STACK;
278278
switch (*b->top) {
279-
case JSONB_DONE:
280-
return JSONB_ERROR_INPUT;
281279
case JSONB_ARRAY_NEXT_VALUE_OR_CLOSE:
282280
BUFFER_COPY_CHAR(b, ',', pos, buf, bufsize);
283281
/* fall-through */
@@ -295,6 +293,9 @@ jsonb_push_object(jsonb *b, char buf[], size_t bufsize)
295293
break;
296294
default:
297295
STACK_HEAD(b, JSONB_ERROR);
296+
/* fall-through */
297+
case JSONB_DONE:
298+
case JSONB_ERROR:
298299
return JSONB_ERROR_INPUT;
299300
}
300301
BUFFER_COPY_CHAR(b, '{', pos, buf, bufsize);
@@ -319,6 +320,8 @@ jsonb_pop_object(jsonb *b, char buf[], size_t bufsize)
319320
break;
320321
default:
321322
STACK_HEAD(b, JSONB_ERROR);
323+
/* fall-through */
324+
case JSONB_ERROR:
322325
return JSONB_ERROR_INPUT;
323326
}
324327
BUFFER_COPY_CHAR(b, '}', pos, buf, bufsize);
@@ -333,8 +336,6 @@ jsonb_push_key(
333336
{
334337
size_t pos = 0;
335338
switch (*b->top) {
336-
case JSONB_DONE:
337-
return JSONB_ERROR_INPUT;
338339
case JSONB_OBJECT_NEXT_KEY_OR_CLOSE:
339340
BUFFER_COPY_CHAR(b, ',', pos, buf, bufsize);
340341
/* fall-through */
@@ -346,6 +347,8 @@ jsonb_push_key(
346347
break;
347348
default:
348349
STACK_HEAD(b, JSONB_ERROR);
350+
/* fall-through */
351+
case JSONB_DONE:
349352
return JSONB_ERROR_INPUT;
350353
}
351354
b->pos += pos;
@@ -361,8 +364,6 @@ jsonb_push_array(jsonb *b, char buf[], size_t bufsize)
361364
if (b->top - b->stack >= JSONB_MAX_DEPTH)
362365
return JSONB_ERROR_STACK;
363366
switch (*b->top) {
364-
case JSONB_DONE:
365-
return JSONB_ERROR_INPUT;
366367
case JSONB_ARRAY_NEXT_VALUE_OR_CLOSE:
367368
BUFFER_COPY_CHAR(b, ',', pos, buf, bufsize);
368369
/* fall-through */
@@ -380,6 +381,8 @@ jsonb_push_array(jsonb *b, char buf[], size_t bufsize)
380381
break;
381382
default:
382383
STACK_HEAD(b, JSONB_ERROR);
384+
/* fall-through */
385+
case JSONB_DONE:
383386
return JSONB_ERROR_INPUT;
384387
}
385388
BUFFER_COPY_CHAR(b, '[', pos, buf, bufsize);
@@ -396,7 +399,6 @@ jsonb_pop_array(jsonb *b, char buf[], size_t bufsize)
396399
size_t pos = 0;
397400
switch (*b->top) {
398401
case JSONB_DONE:
399-
case JSONB_ERROR:
400402
code = JSONB_END;
401403
break;
402404
case JSONB_ARRAY_VALUE_OR_CLOSE:
@@ -405,6 +407,8 @@ jsonb_pop_array(jsonb *b, char buf[], size_t bufsize)
405407
break;
406408
default:
407409
STACK_HEAD(b, JSONB_ERROR);
410+
/* fall-through */
411+
case JSONB_ERROR:
408412
return JSONB_ERROR_INPUT;
409413
}
410414
BUFFER_COPY_CHAR(b, ']', pos, buf, bufsize);
@@ -421,9 +425,6 @@ jsonb_push_token(
421425
enum jsonbcode code;
422426
size_t pos = 0;
423427
switch (*b->top) {
424-
case JSONB_DONE:
425-
case JSONB_ERROR:
426-
return JSONB_ERROR_INPUT;
427428
case JSONB_ARRAY_OR_OBJECT_OR_VALUE:
428429
next_state = JSONB_DONE;
429430
code = JSONB_END;
@@ -441,6 +442,9 @@ jsonb_push_token(
441442
break;
442443
default:
443444
STACK_HEAD(b, JSONB_ERROR);
445+
/* fall-through */
446+
case JSONB_DONE:
447+
case JSONB_ERROR:
444448
return JSONB_ERROR_INPUT;
445449
}
446450
BUFFER_COPY(b, token, len, pos, buf, bufsize);
@@ -532,9 +536,6 @@ jsonb_push_string(
532536
enum jsonbcode code, ret;
533537
size_t pos = 0;
534538
switch (*b->top) {
535-
case JSONB_DONE:
536-
case JSONB_ERROR:
537-
return JSONB_ERROR_INPUT;
538539
case JSONB_ARRAY_OR_OBJECT_OR_VALUE:
539540
next_state = JSONB_DONE;
540541
code = JSONB_END;
@@ -552,6 +553,9 @@ jsonb_push_string(
552553
break;
553554
default:
554555
STACK_HEAD(b, JSONB_ERROR);
556+
/* fall-through */
557+
case JSONB_DONE:
558+
case JSONB_ERROR:
555559
return JSONB_ERROR_INPUT;
556560
}
557561
BUFFER_COPY_CHAR(b, '"', pos, buf, bufsize);

0 commit comments

Comments
 (0)