@@ -279,12 +279,11 @@ jsonb_push_object(jsonb *b, char buf[], size_t bufsize)
279279 case JSONB_ARRAY_NEXT_VALUE_OR_CLOSE :
280280 BUFFER_COPY_CHAR (b , ',' , pos , buf , bufsize );
281281 /* fall-through */
282- case JSONB_OBJECT_VALUE :
283282 case JSONB_ARRAY_VALUE_OR_CLOSE :
284- if ( * b -> top <= JSONB_OBJECT_NEXT_KEY_OR_CLOSE )
285- new_state = JSONB_OBJECT_NEXT_KEY_OR_CLOSE ;
286- else if ( * b -> top <= JSONB_ARRAY_NEXT_VALUE_OR_CLOSE )
287- new_state = JSONB_ARRAY_NEXT_VALUE_OR_CLOSE ;
283+ new_state = JSONB_ARRAY_NEXT_VALUE_OR_CLOSE ;
284+ break ;
285+ case JSONB_OBJECT_VALUE :
286+ new_state = JSONB_OBJECT_NEXT_KEY_OR_CLOSE ;
288287 break ;
289288 case JSONB_ARRAY_OR_OBJECT_OR_VALUE :
290289 new_state = JSONB_DONE ;
@@ -311,7 +310,7 @@ jsonb_pop_object(jsonb *b, char buf[], size_t bufsize)
311310 switch (* b -> top ) {
312311 case JSONB_OBJECT_KEY_OR_CLOSE :
313312 case JSONB_OBJECT_NEXT_KEY_OR_CLOSE :
314- code = b -> top - 1 == b -> stack ? JSONB_END : JSONB_OK ;
313+ code = b -> stack == b -> top - 1 ? JSONB_END : JSONB_OK ;
315314 break ;
316315 default :
317316 STACK_HEAD (b , JSONB_ERROR );
@@ -425,12 +424,11 @@ jsonb_push_array(jsonb *b, char buf[], size_t bufsize)
425424 case JSONB_ARRAY_NEXT_VALUE_OR_CLOSE :
426425 BUFFER_COPY_CHAR (b , ',' , pos , buf , bufsize );
427426 /* fall-through */
428- case JSONB_OBJECT_VALUE :
429427 case JSONB_ARRAY_VALUE_OR_CLOSE :
430- if ( * b -> top <= JSONB_OBJECT_NEXT_KEY_OR_CLOSE )
431- new_state = JSONB_OBJECT_NEXT_KEY_OR_CLOSE ;
432- else if ( * b -> top <= JSONB_ARRAY_NEXT_VALUE_OR_CLOSE )
433- new_state = JSONB_ARRAY_NEXT_VALUE_OR_CLOSE ;
428+ new_state = JSONB_ARRAY_NEXT_VALUE_OR_CLOSE ;
429+ break ;
430+ case JSONB_OBJECT_VALUE :
431+ new_state = JSONB_OBJECT_NEXT_KEY_OR_CLOSE ;
434432 break ;
435433 case JSONB_ARRAY_OR_OBJECT_OR_VALUE :
436434 new_state = JSONB_DONE ;
@@ -439,6 +437,7 @@ jsonb_push_array(jsonb *b, char buf[], size_t bufsize)
439437 STACK_HEAD (b , JSONB_ERROR );
440438 /* fall-through */
441439 case JSONB_DONE :
440+ case JSONB_ERROR :
442441 return JSONB_ERROR_INPUT ;
443442 }
444443 BUFFER_COPY_CHAR (b , '[' , pos , buf , bufsize );
@@ -456,7 +455,7 @@ jsonb_pop_array(jsonb *b, char buf[], size_t bufsize)
456455 switch (* b -> top ) {
457456 case JSONB_ARRAY_VALUE_OR_CLOSE :
458457 case JSONB_ARRAY_NEXT_VALUE_OR_CLOSE :
459- code = b -> top - 1 == b -> stack ? JSONB_END : JSONB_OK ;
458+ code = b -> stack == b -> top - 1 ? JSONB_END : JSONB_OK ;
460459 break ;
461460 default :
462461 STACK_HEAD (b , JSONB_ERROR );
0 commit comments