Skip to content

Commit 840b65c

Browse files
committed
Fix closing flow sequence after explicit key
The fix in #295 was not correct. # cat a.yaml --- [?] # Before % ./tests/run-parser-test-suite --flow keep < a.yaml +STR +DOC --- +SEQ [] +MAP {} -SEQ -DOC -STR % ./tests/run-loader a.yaml [1] Loading 'a.yaml': run-loader: loader.c:470: yaml_parser_load_sequence_end: Assertion `parser->document->nodes.start[index-1].type == YAML_SEQUENCE_NODE' failed. [1] 21446 IOT instruction (core dumped) ./tests/run-loader a.yaml # After % ./tests/run-parser-test-suite --flow keep < a.yaml +STR +DOC --- +SEQ [] +MAP {} =VAL : =VAL : -MAP -SEQ -DOC -STR % ./tests/run-loader a.yaml [1] Loading 'a.yaml': SUCCESS (1 documents)
1 parent 588eabf commit 840b65c

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

src/parser.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,11 +1059,9 @@ yaml_parser_parse_flow_sequence_entry_mapping_key(yaml_parser_t *parser,
10591059
return yaml_parser_parse_node(parser, event, 0, 0);
10601060
}
10611061
else if (token->type == YAML_FLOW_SEQUENCE_END_TOKEN) {
1062-
parser->state = POP(parser, parser->states);
1063-
(void)POP(parser, parser->marks);
1064-
SEQUENCE_END_EVENT_INIT(*event, token->start_mark, token->end_mark);
1065-
SKIP_TOKEN(parser);
1066-
return 1;
1062+
yaml_mark_t mark = token->start_mark;
1063+
parser->state = YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE;
1064+
return yaml_parser_process_empty_scalar(parser, event, mark);
10671065
}
10681066
else {
10691067
yaml_mark_t mark = token->end_mark;

0 commit comments

Comments
 (0)