Branch Coverage

src/pdfmake_writer.c
Criterion Covered Total %
branch 151 252 59.9


line true false branch
98 83 20995 if (value < 0) {
109 12197 21078 } while (v > 0);
112 83 20995 if (neg) buf[len++] = '-';
115 33275 21078 while (pos > 0) {
137 0 20886 if (isnan(value)) {
141 0 20886 if (isinf(value)) {
142 0 0 if (value > 0) {
152 14532 6354 if (value == floor(value) && value >= -9007199254740992.0 && value <= 9007199254740992.0) {
14532 0 if (value == floor(value) && value >= -9007199254740992.0 && value <= 9007199254740992.0) {
14532 0 if (value == floor(value) && value >= -9007199254740992.0 && value <= 9007199254740992.0) {
158 0 6354 if (value < 0) {
171 461 5893 if (int_part == 0) {
179 11551 5893 } while (iv > 0);
180 17444 5893 while (ipos > 0) {
186 6354 0 if (frac_part > 0) {
193 91195 6055 for (i = 0; i < 15; i++) {
196 0 91195 if (digit > 9) digit = 9; /* Clamp rounding errors */
201 299 90896 if (scaled < 1e-14) break;
205 6732 236 while (frac_digits > 1 && frac_buf[frac_digits - 1] == '0') {
614 6118 while (frac_digits > 1 && frac_buf[frac_digits - 1] == '0') {
210 90581 6354 for (j = 0; j < frac_digits; j++) {
228 9 11 if (value) {
254 0 9041 if (err != PDFMAKE_OK) return err;
257 55264 9041 for (i = 0; i < len; i++) {
259 4 55260 if (name_escape_table[c]) {
268 0 55264 if (err != PDFMAKE_OK) return err;
278 12 9041 if (!bytes) return PDFMAKE_EINVAL;
288 0 760 if (err != PDFMAKE_OK) return err;
290 10357 760 for (i = 0; i < len; i++) {
322 0 10357 if (err != PDFMAKE_OK) return err;
335 0 34 if (err != PDFMAKE_OK) return err;
337 1556 34 for (i = 0; i < len; i++) {
342 0 1556 if (err != PDFMAKE_OK) return err;
353 0 860 if (!arr) return PDFMAKE_EINVAL;
356 0 860 if (err != PDFMAKE_OK) return err;
358 4060 860 for (i = 0; i < arr->len; i++) {
359 3200 860 if (i > 0) {
361 0 3200 if (err != PDFMAKE_OK) return err;
364 0 4060 if (err != PDFMAKE_OK) return err;
377 0 2296 if (!dict) return PDFMAKE_EINVAL;
380 0 2296 if (err != PDFMAKE_OK) return err;
383 6635 2284 for (order = 0; order < dict->next_order; order++) {
385 50093 102 for (i = 0; i < dict->cap; i++) {
387 18148 31945 if (e->key != 0 && !e->deleted && e->order == order) {
18148 0 if (e->key != 0 && !e->deleted && e->order == order) {
6533 11615 if (e->key != 0 && !e->deleted && e->order == order) {
390 7 6526 if (err != PDFMAKE_OK) return err;
394 0 6526 if (err != PDFMAKE_OK) return err;
398 5 6521 if (err != PDFMAKE_OK) return err;
432 339 0 if (!stream || !stream->dict) return PDFMAKE_EINVAL;
0 339 if (!stream || !stream->dict) return PDFMAKE_EINVAL;
438 339 0 filter_val = filter_key ? pdfmake_dict_get(&dict_obj, filter_key) : NULL;
444 17 322 if (filter_val && filter_val->kind == PDFMAKE_NAME && !stream->filtered) {
17 0 if (filter_val && filter_val->kind == PDFMAKE_NAME && !stream->filtered) {
2 15 if (filter_val && filter_val->kind == PDFMAKE_NAME && !stream->filtered) {
447 2 0 if (filter_name && strcmp(filter_name, "FlateDecode") == 0 && stream->raw && stream->raw_len > 0) {
0 2 if (filter_name && strcmp(filter_name, "FlateDecode") == 0 && stream->raw && stream->raw_len > 0) {
0 0 if (filter_name && strcmp(filter_name, "FlateDecode") == 0 && stream->raw && stream->raw_len > 0) {
0 0 if (filter_name && strcmp(filter_name, "FlateDecode") == 0 && stream->raw && stream->raw_len > 0) {
449 0 0 if (pdfmake_buf_init(&compressed) == PDFMAKE_OK) {
451 0 0 if (err == PDFMAKE_OK) {
462 339 0 if (length_key) {
469 3 336 if (err != PDFMAKE_OK) {
470 0 3 if (needs_free) pdfmake_buf_free(&compressed);
476 0 336 if (err != PDFMAKE_OK) {
477 0 0 if (needs_free) pdfmake_buf_free(&compressed);
482 319 17 if (output_data && output_len > 0) {
319 0 if (output_data && output_len > 0) {
484 0 319 if (err != PDFMAKE_OK) {
485 0 0 if (needs_free) pdfmake_buf_free(&compressed);
490 0 336 if (needs_free) pdfmake_buf_free(&compressed);
501 12301 0 if (!buf || !obj) return PDFMAKE_EINVAL;
0 12301 if (!buf || !obj) return PDFMAKE_EINVAL;
520 15 760 if (obj->as.str.hex) {
563 0 15 if (err != PDFMAKE_OK) return err;
564 559 15 for (i = 0; i < len; i++) {
577 0 559 if (err != PDFMAKE_OK) return err;
594 34 0 if (crypt && !skip_encrypt) {
15 19 if (crypt && !skip_encrypt) {
595 12 3 cap = (crypt->R >= 4) ? (len + 32 + 16) : (len + 1);
597 0 15 if (!enc) return PDFMAKE_ENOMEM;
600 0 15 if (n < 0) { free(enc); return PDFMAKE_EINVAL; }
606 19 15 if (s->hex) {
621 0 10 if (!arr) return PDFMAKE_EINVAL;
623 0 10 if (err != PDFMAKE_OK) return err;
624 25 10 for (i = 0; i < arr->len; i++) {
625 15 10 if (i > 0) {
627 0 15 if (err != PDFMAKE_OK) return err;
631 0 25 if (err != PDFMAKE_OK) return err;
644 0 57 if (!dict) return PDFMAKE_EINVAL;
646 0 57 if (err != PDFMAKE_OK) return err;
648 183 57 for (order = 0; order < dict->next_order; order++) {
649 1822 0 for (i = 0; i < dict->cap; i++) {
651 619 1203 if (e->key != 0 && !e->deleted && e->order == order) {
619 0 if (e->key != 0 && !e->deleted && e->order == order) {
183 436 if (e->key != 0 && !e->deleted && e->order == order) {
653 0 183 if (err != PDFMAKE_OK) return err;
655 0 183 if (err != PDFMAKE_OK) return err;
658 0 183 if (err != PDFMAKE_OK) return err;
684 5 0 if (!stream || !stream->dict) return PDFMAKE_EINVAL;
0 5 if (!stream || !stream->dict) return PDFMAKE_EINVAL;
692 5 0 ? pdfmake_dict_get(&dict_obj, filter_key) : NULL;
699 0 5 if (filter_val && filter_val->kind == PDFMAKE_NAME && !stream->filtered) {
0 0 if (filter_val && filter_val->kind == PDFMAKE_NAME && !stream->filtered) {
0 0 if (filter_val && filter_val->kind == PDFMAKE_NAME && !stream->filtered) {
702 0 0 if (filter_name && strcmp(filter_name, "FlateDecode") == 0 &&
0 0 if (filter_name && strcmp(filter_name, "FlateDecode") == 0 &&
703 0 0 stream->raw && stream->raw_len > 0) {
0 0 stream->raw && stream->raw_len > 0) {
704 0 0 if (pdfmake_buf_init(&compressed) == PDFMAKE_OK) {
707 0 0 if (err == PDFMAKE_OK) {
719 5 0 if (crypt && !skip_encrypt && output_data && output_len > 0) {
5 0 if (crypt && !skip_encrypt && output_data && output_len > 0) {
5 0 if (crypt && !skip_encrypt && output_data && output_len > 0) {
5 0 if (crypt && !skip_encrypt && output_data && output_len > 0) {
720 0 5 if (pdfmake_crypt_encrypt_stream(crypt, (int)obj_num, 0,
723 0 0 if (needs_free) pdfmake_buf_free(&compressed);
732 5 0 if (length_key) {
739 0 5 if (err != PDFMAKE_OK) goto cleanup;
742 0 5 if (err != PDFMAKE_OK) goto cleanup;
744 5 0 if (output_data && output_len > 0) {
5 0 if (output_data && output_len > 0) {
746 0 5 if (err != PDFMAKE_OK) goto cleanup;
752 0 5 if (needs_free) pdfmake_buf_free(&compressed);
761 247 0 if (!buf || !obj) return PDFMAKE_EINVAL;
0 247 if (!buf || !obj) return PDFMAKE_EINVAL;