Branch Coverage

api.c
Criterion Covered Total %
branch 146 484 30.1


line true false branch
33 3434 0 return malloc(size ? size : 1);
43 66 0 return ptr ? realloc(ptr, size ? size : 1) : malloc(size ? size : 1);
66 0 return ptr ? realloc(ptr, size ? size : 1) : malloc(size ? size : 1);
0 0 return ptr ? realloc(ptr, size ? size : 1) : malloc(size ? size : 1);
53 4643 2204 if (ptr) free(ptr);
63 0 1219 if (!str)
79 0 66 if ((char *)*end - (char *)*start >= INT_MAX / 2)
83 0 66 if (!new_start) return 0;
104 24 61 if (*b_start == *b_pointer)
107 0 61 while (*a_end - *a_pointer <= *b_pointer - *b_start) {
108 0 0 if (!yaml_string_extend(a_start, a_pointer, a_end))
127 0 0 if ((char *)*end - (char *)*start >= INT_MAX / 2)
131 0 0 if (!new_start) return 0;
149 0 48 if (*start == *head && *tail == *end) {
0 0 if (*start == *head && *tail == *end) {
153 0 0 if (!new_start) return 0;
163 48 0 if (*tail == *end) {
164 26 22 if (*head != *tail) {
182 0 109 assert(parser); /* Non-NULL parser object expected. */
185 109 0 if (!BUFFER_INIT(parser, parser->raw_buffer, INPUT_RAW_BUFFER_SIZE))
0 109 if (!BUFFER_INIT(parser, parser->raw_buffer, INPUT_RAW_BUFFER_SIZE))
187 109 0 if (!BUFFER_INIT(parser, parser->buffer, INPUT_BUFFER_SIZE))
0 109 if (!BUFFER_INIT(parser, parser->buffer, INPUT_BUFFER_SIZE))
189 109 0 if (!QUEUE_INIT(parser, parser->tokens, INITIAL_QUEUE_SIZE, yaml_token_t*))
0 109 if (!QUEUE_INIT(parser, parser->tokens, INITIAL_QUEUE_SIZE, yaml_token_t*))
191 109 0 if (!STACK_INIT(parser, parser->indents, int*))
0 109 if (!STACK_INIT(parser, parser->indents, int*))
193 109 0 if (!STACK_INIT(parser, parser->simple_keys, yaml_simple_key_t*))
0 109 if (!STACK_INIT(parser, parser->simple_keys, yaml_simple_key_t*))
195 109 0 if (!STACK_INIT(parser, parser->states, yaml_parser_state_t*))
0 109 if (!STACK_INIT(parser, parser->states, yaml_parser_state_t*))
197 109 0 if (!STACK_INIT(parser, parser->marks, yaml_mark_t*))
0 109 if (!STACK_INIT(parser, parser->marks, yaml_mark_t*))
199 109 0 if (!STACK_INIT(parser, parser->tag_directives, yaml_tag_directive_t*))
0 109 if (!STACK_INIT(parser, parser->tag_directives, yaml_tag_directive_t*))
225 0 131 assert(parser); /* Non-NULL parser object expected. */
229 1 131 while (!QUEUE_EMPTY(parser, parser->tokens)) {
237 12 131 while (!STACK_EMPTY(parser, parser->tag_directives)) {
257 99 103 if (parser->input.string.current == parser->input.string.end) {
262 103 0 if (size > (size_t)(parser->input.string.end
295 0 104 assert(parser); /* Non-NULL parser object expected. */
296 0 104 assert(!parser->read_handler); /* You can set the source only once. */
297 0 104 assert(input); /* Non-NULL input string expected. */
314 0 3 assert(parser); /* Non-NULL parser object expected. */
315 0 3 assert(!parser->read_handler); /* You can set the source only once. */
316 0 3 assert(file); /* Non-NULL file object expected. */
332 0 2 assert(parser); /* Non-NULL parser object expected. */
333 0 2 assert(!parser->read_handler); /* You can set the source only once. */
334 0 2 assert(handler); /* Non-NULL read handler expected. */
347 0 0 assert(parser); /* Non-NULL parser object expected. */
348 0 0 assert(!parser->encoding); /* Encoding is already set or detected. */
360 0 87 assert(emitter); /* Non-NULL emitter object expected. */
363 87 0 if (!BUFFER_INIT(emitter, emitter->buffer, OUTPUT_BUFFER_SIZE))
0 87 if (!BUFFER_INIT(emitter, emitter->buffer, OUTPUT_BUFFER_SIZE))
365 87 0 if (!BUFFER_INIT(emitter, emitter->raw_buffer, OUTPUT_RAW_BUFFER_SIZE))
0 87 if (!BUFFER_INIT(emitter, emitter->raw_buffer, OUTPUT_RAW_BUFFER_SIZE))
367 87 0 if (!STACK_INIT(emitter, emitter->states, yaml_emitter_state_t*))
0 87 if (!STACK_INIT(emitter, emitter->states, yaml_emitter_state_t*))
369 87 0 if (!QUEUE_INIT(emitter, emitter->events, INITIAL_QUEUE_SIZE, yaml_event_t*))
0 87 if (!QUEUE_INIT(emitter, emitter->events, INITIAL_QUEUE_SIZE, yaml_event_t*))
371 87 0 if (!STACK_INIT(emitter, emitter->indents, int*))
0 87 if (!STACK_INIT(emitter, emitter->indents, int*))
373 87 0 if (!STACK_INIT(emitter, emitter->tag_directives, yaml_tag_directive_t*))
0 87 if (!STACK_INIT(emitter, emitter->tag_directives, yaml_tag_directive_t*))
397 0 110 assert(emitter); /* Non-NULL emitter object expected. */
402 0 110 while (!QUEUE_EMPTY(emitter, emitter->events)) {
407 0 110 while (!STACK_EMPTY(empty, emitter->tag_directives)) {
427 0 0 if (emitter->output.string.size - *emitter->output.string.size_written
463 0 0 assert(emitter); /* Non-NULL emitter object expected. */
464 0 0 assert(!emitter->write_handler); /* You can set the output only once. */
465 0 0 assert(output); /* Non-NULL output string expected. */
483 0 2 assert(emitter); /* Non-NULL emitter object expected. */
484 0 2 assert(!emitter->write_handler); /* You can set the output only once. */
485 0 2 assert(file); /* Non-NULL file object expected. */
501 0 85 assert(emitter); /* Non-NULL emitter object expected. */
502 0 85 assert(!emitter->write_handler); /* You can set the output only once. */
503 0 85 assert(handler); /* Non-NULL handler object expected. */
516 0 0 assert(emitter); /* Non-NULL emitter object expected. */
517 0 0 assert(!emitter->encoding); /* You can set encoding only once. */
529 0 87 assert(emitter); /* Non-NULL emitter object expected. */
541 0 87 assert(emitter); /* Non-NULL emitter object expected. */
543 87 0 emitter->best_indent = (1 < indent && indent < 10) ? indent : 2;
87 0 emitter->best_indent = (1 < indent && indent < 10) ? indent : 2;
553 0 87 assert(emitter); /* Non-NULL emitter object expected. */
565 0 87 assert(emitter); /* Non-NULL emitter object expected. */
577 0 0 assert(emitter); /* Non-NULL emitter object expected. */
589 0 1 assert(token); /* Non-NULL token object expected. */
634 9460 626 while (pointer < end) {
641 73 9387 width = (octet & 0x80) == 0x00 ? 1 :
57 16 width = (octet & 0x80) == 0x00 ? 1 :
0 57 width = (octet & 0x80) == 0x00 ? 1 :
0 0 width = (octet & 0x80) == 0x00 ? 1 :
645 9387 73 value = (octet & 0x80) == 0x00 ? octet & 0x7F :
16 57 value = (octet & 0x80) == 0x00 ? octet & 0x7F :
57 0 value = (octet & 0x80) == 0x00 ? octet & 0x7F :
0 0 value = (octet & 0x80) == 0x00 ? octet & 0x7F :
649 0 9460 if (!width) return 0;
650 0 9460 if (pointer+width > end) return 0;
651 130 9460 for (k = 1; k < width; k ++) {
653 0 130 if ((octet & 0xC0) != 0x80) return 0;
656 73 9387 if (!((width == 1) ||
16 57 if (!((width == 1) ||
0 0 if (!((width == 1) ||
657 0 16 (width == 2 && value >= 0x80) ||
57 0 (width == 2 && value >= 0x80) ||
658 0 57 (width == 3 && value >= 0x800) ||
659 0 0 (width == 4 && value >= 0x10000))) return 0;
677 0 87 assert(event); /* Non-NULL event object is expected. */
693 0 87 assert(event); /* Non-NULL event object is expected. */
723 0 109 assert(event); /* Non-NULL event object is expected. */
724 0 109 assert((tag_directives_start && tag_directives_end) ||
0 0 assert((tag_directives_start && tag_directives_end) ||
0 109 assert((tag_directives_start && tag_directives_end) ||
728 0 109 if (version_directive) {
730 0 0 if (!version_directive_copy) goto error;
735 0 109 if (tag_directives_start != tag_directives_end) {
737 0 0 if (!STACK_INIT(&context, tag_directives_copy, yaml_tag_directive_t*))
0 0 if (!STACK_INIT(&context, tag_directives_copy, yaml_tag_directive_t*))
739 0 0 for (tag_directive = tag_directives_start;
741 0 0 assert(tag_directive->handle);
742 0 0 assert(tag_directive->prefix);
743 0 0 if (!yaml_check_utf8(tag_directive->handle,
746 0 0 if (!yaml_check_utf8(tag_directive->prefix,
751 0 0 if (!value.handle || !value.prefix) goto error;
0 0 if (!value.handle || !value.prefix) goto error;
752 0 0 if (!PUSH(&context, tag_directives_copy, value))
0 0 if (!PUSH(&context, tag_directives_copy, value))
0 0 if (!PUSH(&context, tag_directives_copy, value))
767 0 0 while (!STACK_EMPTY(context, tag_directives_copy)) {
788 0 109 assert(event); /* Non-NULL emitter object is expected. */
805 0 17 assert(event); /* Non-NULL event object is expected. */
806 0 17 assert(anchor); /* Non-NULL anchor is expected. */
808 0 17 if (!yaml_check_utf8(anchor, strlen((char *)anchor))) return 0;
811 0 17 if (!anchor_copy)
835 0 291 assert(event); /* Non-NULL event object is expected. */
836 0 291 assert(value); /* Non-NULL anchor is expected. */
838 0 291 if (anchor) {
839 0 0 if (!yaml_check_utf8(anchor, strlen((char *)anchor))) goto error;
841 0 0 if (!anchor_copy) goto error;
844 272 19 if (tag) {
845 0 272 if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error;
847 0 272 if (!tag_copy) goto error;
850 0 291 if (length < 0) {
854 0 291 if (!yaml_check_utf8(value, length)) goto error;
856 0 291 if (!value_copy) goto error;
886 0 44 assert(event); /* Non-NULL event object is expected. */
888 6 38 if (anchor) {
889 0 6 if (!yaml_check_utf8(anchor, strlen((char *)anchor))) goto error;
891 0 6 if (!anchor_copy) goto error;
894 3 41 if (tag) {
895 0 3 if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error;
897 0 3 if (!tag_copy) goto error;
921 0 44 assert(event); /* Non-NULL event object is expected. */
941 0 66 assert(event); /* Non-NULL event object is expected. */
943 10 56 if (anchor) {
944 0 10 if (!yaml_check_utf8(anchor, strlen((char *)anchor))) goto error;
946 0 10 if (!anchor_copy) goto error;
949 27 39 if (tag) {
950 0 27 if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error;
952 0 27 if (!tag_copy) goto error;
976 0 66 assert(event); /* Non-NULL event object is expected. */
992 0 1749 assert(event); /* Non-NULL event object expected. */
998 0 215 for (tag_directive = event->data.document_start.tag_directives.start;
1062 0 0 assert(document); /* Non-NULL document object is expected. */
1063 0 0 assert((tag_directives_start && tag_directives_end) ||
0 0 assert((tag_directives_start && tag_directives_end) ||
0 0 assert((tag_directives_start && tag_directives_end) ||
1067 0 0 if (!STACK_INIT(&context, nodes, yaml_node_t*)) goto error;
0 0 if (!STACK_INIT(&context, nodes, yaml_node_t*)) goto error;
1069 0 0 if (version_directive) {
1071 0 0 if (!version_directive_copy) goto error;
1076 0 0 if (tag_directives_start != tag_directives_end) {
1078 0 0 if (!STACK_INIT(&context, tag_directives_copy, yaml_tag_directive_t*))
0 0 if (!STACK_INIT(&context, tag_directives_copy, yaml_tag_directive_t*))
1080 0 0 for (tag_directive = tag_directives_start;
1082 0 0 assert(tag_directive->handle);
1083 0 0 assert(tag_directive->prefix);
1084 0 0 if (!yaml_check_utf8(tag_directive->handle,
1087 0 0 if (!yaml_check_utf8(tag_directive->prefix,
1092 0 0 if (!value.handle || !value.prefix) goto error;
0 0 if (!value.handle || !value.prefix) goto error;
1093 0 0 if (!PUSH(&context, tag_directives_copy, value))
0 0 if (!PUSH(&context, tag_directives_copy, value))
0 0 if (!PUSH(&context, tag_directives_copy, value))
1109 0 0 while (!STACK_EMPTY(&context, tag_directives_copy)) {
1130 0 0 assert(document); /* Non-NULL document object is expected. */
1132 0 0 while (!STACK_EMPTY(&context, document->nodes)) {
1152 0 0 for (tag_directive = document->tag_directives.start;
1170 0 0 assert(document); /* Non-NULL document object is expected. */
1172 0 0 if (index > 0 && document->nodes.start + index <= document->nodes.top) {
0 0 if (index > 0 && document->nodes.start + index <= document->nodes.top) {
1185 0 0 assert(document); /* Non-NULL document object is expected. */
1187 0 0 if (document->nodes.top != document->nodes.start) {
1210 0 0 assert(document); /* Non-NULL document object is expected. */
1211 0 0 assert(value); /* Non-NULL value is expected. */
1213 0 0 if (!tag) {
1217 0 0 if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error;
1219 0 0 if (!tag_copy) goto error;
1221 0 0 if (length < 0) {
1225 0 0 if (!yaml_check_utf8(value, length)) goto error;
1227 0 0 if (!value_copy) goto error;
1232 0 0 if (!PUSH(&context, document->nodes, node)) goto error;
0 0 if (!PUSH(&context, document->nodes, node)) goto error;
0 0 if (!PUSH(&context, document->nodes, node)) goto error;
1263 0 0 assert(document); /* Non-NULL document object is expected. */
1265 0 0 if (!tag) {
1269 0 0 if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error;
1271 0 0 if (!tag_copy) goto error;
1273 0 0 if (!STACK_INIT(&context, items, yaml_node_item_t*)) goto error;
0 0 if (!STACK_INIT(&context, items, yaml_node_item_t*)) goto error;
1277 0 0 if (!PUSH(&context, document->nodes, node)) goto error;
0 0 if (!PUSH(&context, document->nodes, node)) goto error;
0 0 if (!PUSH(&context, document->nodes, node)) goto error;
1308 0 0 assert(document); /* Non-NULL document object is expected. */
1310 0 0 if (!tag) {
1314 0 0 if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error;
1316 0 0 if (!tag_copy) goto error;
1318 0 0 if (!STACK_INIT(&context, pairs, yaml_node_pair_t*)) goto error;
0 0 if (!STACK_INIT(&context, pairs, yaml_node_pair_t*)) goto error;
1322 0 0 if (!PUSH(&context, document->nodes, node)) goto error;
0 0 if (!PUSH(&context, document->nodes, node)) goto error;
0 0 if (!PUSH(&context, document->nodes, node)) goto error;
1345 0 0 assert(document); /* Non-NULL document is required. */
1346 0 0 assert(sequence > 0
0 0 assert(sequence > 0
1349 0 0 assert(document->nodes.start[sequence-1].type == YAML_SEQUENCE_NODE);
1351 0 0 assert(item > 0 && document->nodes.start + item <= document->nodes.top);
0 0 assert(item > 0 && document->nodes.start + item <= document->nodes.top);
1354 0 0 if (!PUSH(&context,
0 0 if (!PUSH(&context,
0 0 if (!PUSH(&context,
1375 0 0 assert(document); /* Non-NULL document is required. */
1376 0 0 assert(mapping > 0
0 0 assert(mapping > 0
1379 0 0 assert(document->nodes.start[mapping-1].type == YAML_MAPPING_NODE);
1381 0 0 assert(key > 0 && document->nodes.start + key <= document->nodes.top);
0 0 assert(key > 0 && document->nodes.start + key <= document->nodes.top);
1383 0 0 assert(value > 0 && document->nodes.start + value <= document->nodes.top);
0 0 assert(value > 0 && document->nodes.start + value <= document->nodes.top);
1389 0 0 if (!PUSH(&context,
0 0 if (!PUSH(&context,
0 0 if (!PUSH(&context,