Branch Coverage

src/pdfmake_cmap.c
Criterion Covered Total %
branch 168 326 51.5


line true false branch
54 2439 19 while (t->p < t->end) {
56 1820 619 if (c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == '\f') {
1820 0 if (c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == '\f') {
1820 0 if (c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == '\f') {
1638 182 if (c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == '\f') {
0 1638 if (c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == '\f') {
58 0 1638 } else if (c == '%') {
60 0 0 while (t->p < t->end && *t->p != '\n' && *t->p != '\r')
0 0 while (t->p < t->end && *t->p != '\n' && *t->p != '\r')
0 0 while (t->p < t->end && *t->p != '\n' && *t->p != '\r')
69 0 0 return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
0 0 return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
0 0 return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
0 0 return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
0 0 return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
0 0 return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
73 384 0 if (c >= '0' && c <= '9') return c - '0';
371 13 if (c >= '0' && c <= '9') return c - '0';
74 0 13 if (c >= 'a' && c <= 'f') return c - 'a' + 10;
0 0 if (c >= 'a' && c <= 'f') return c - 'a' + 10;
75 13 0 if (c >= 'A' && c <= 'F') return c - 'A' + 10;
13 0 if (c >= 'A' && c <= 'F') return c - 'A' + 10;
90 145 0 if (t->p >= t->end || *t->p != '<') return -1;
0 145 if (t->p >= t->end || *t->p != '<') return -1;
96 531 0 while (t->p < t->end && *t->p != '>') {
386 145 while (t->p < t->end && *t->p != '>') {
98 384 2 if (c == ' ' || c == '\t' || c == '\r' || c == '\n') continue;
384 0 if (c == ' ' || c == '\t' || c == '\r' || c == '\n') continue;
384 0 if (c == ' ' || c == '\t' || c == '\r' || c == '\n') continue;
0 384 if (c == ' ' || c == '\t' || c == '\r' || c == '\n') continue;
100 0 384 if (v < 0) return -1;
101 192 192 if (nibble_hi < 0) {
104 0 192 if (written >= out_cap) return -1;
110 0 145 if (nibble_hi >= 0) {
111 0 0 if (written >= out_cap) return -1;
114 145 0 if (t->p >= t->end || *t->p != '>') return -1;
0 145 if (t->p >= t->end || *t->p != '>') return -1;
129 107 0 if (n < 0 || n > 4) return -1;
0 107 if (n < 0 || n > 4) return -1;
131 112 107 for (i = 0; i < n; i++) {
151 38 0 if (n < 0 || (n % 2) != 0) return -1;
0 38 if (n < 0 || (n % 2) != 0) return -1;
155 40 38 while (i + 1 < n) {
161 3 37 if (hi >= 0xD800 && hi <= 0xDBFF && i + 1 < n) {
0 3 if (hi >= 0xD800 && hi <= 0xDBFF && i + 1 < n) {
0 0 if (hi >= 0xD800 && hi <= 0xDBFF && i + 1 < n) {
163 0 0 if (lo >= 0xDC00 && lo <= 0xDFFF) {
0 0 if (lo >= 0xDC00 && lo <= 0xDFFF) {
169 0 40 if (written >= out_cap) return -1;
185 559 0 if (t->p < t->end && (*t->p == '-' || *t->p == '+')) {
559 0 if (t->p < t->end && (*t->p == '-' || *t->p == '+')) {
0 559 if (t->p < t->end && (*t->p == '-' || *t->p == '+')) {
186 0 0 if (*t->p == '-') negative = 1;
191 654 0 while (t->p < t->end && *t->p >= '0' && *t->p <= '9') {
376 278 while (t->p < t->end && *t->p >= '0' && *t->p <= '9') {
95 281 while (t->p < t->end && *t->p >= '0' && *t->p <= '9') {
196 483 76 if (!any) { t->p = start; return -1; }
197 0 76 *out = negative ? -v : v;
211 0 286 if ((size_t)(t->end - t->p) < kwlen) { t->p = save; return 0; }
212 210 76 if (memcmp(t->p, kw, kwlen) != 0) { t->p = save; return 0; }
214 76 0 if (t->p + kwlen < t->end) {
216 58 18 if (!(c == ' ' || c == '\t' || c == '\r' || c == '\n' ||
58 0 if (!(c == ' ' || c == '\t' || c == '\r' || c == '\n' ||
58 0 if (!(c == ' ' || c == '\t' || c == '\r' || c == '\n' ||
0 58 if (!(c == ' ' || c == '\t' || c == '\r' || c == '\n' ||
0 0 if (!(c == ' ' || c == '\t' || c == '\r' || c == '\n' ||
0 0 if (!(c == ' ' || c == '\t' || c == '\r' || c == '\n' ||
217 0 0 c == '<' || c == '[' || c == '/' || c == '%')) {
0 0 c == '<' || c == '[' || c == '/' || c == '%')) {
234 5 2 if (need <= cm->entry_cap) return 0;
235 0 2 new_cap = cm->entry_cap ? cm->entry_cap : 64;
236 0 2 while (new_cap < need) new_cap *= 2;
238 0 2 if (!n) return -1;
248 14 17 if (need <= cm->range_cap) return 0;
249 0 17 new_cap = cm->range_cap ? cm->range_cap : 16;
250 0 17 while (new_cap < need) new_cap *= 2;
252 0 17 if (!n) return -1;
263 7 0 if (uni_count == 0 || uni_count > PDFMAKE_CMAP_MAX_UNI) return -1;
0 7 if (uni_count == 0 || uni_count > PDFMAKE_CMAP_MAX_UNI) return -1;
264 0 7 if (cmap_reserve_entries(cm, cm->entry_count + 1) < 0) return -1;
268 9 7 for (i = 0; i < uni_count; i++) e->uni[i] = uni[i];
276 0 31 if (hi < lo) return -1;
277 0 31 if (cmap_reserve_ranges(cm, cm->range_count + 1) < 0) return -1;
298 7 2 for (i = 0; i < count; i++) {
300 0 7 if (code_w < 0) return -1;
301 7 0 if (cm->code_width == 0 || code_w > cm->code_width)
0 7 if (cm->code_width == 0 || code_w > cm->code_width)
305 0 7 if (n <= 0) return -1;
307 0 7 if (cmap_add_entry(cm, code, uni, (size_t)n) < 0) return -1;
334 31 17 for (i = 0; i < count; i++) {
337 31 0 if (lw < 0 || hw < 0) return -1;
0 31 if (lw < 0 || hw < 0) return -1;
339 31 0 if (cm->code_width == 0 || w > cm->code_width) cm->code_width = w;
0 31 if (cm->code_width == 0 || w > cm->code_width) cm->code_width = w;
342 0 31 if (t->p >= t->end) return -1;
344 31 0 if (*t->p == '<') {
347 0 31 if (n <= 0) return -1;
349 31 0 if (n == 1) {
351 0 31 if (cmap_add_range(cm, lo, hi, uni[0]) < 0) return -1;
356 0 0 for (c = lo; c <= hi; c++) {
357 0 0 for (j = 0; j < n; j++) u[j] = uni[j];
360 0 0 if (n > 0) u[n - 1] += delta;
361 0 0 if (cmap_add_entry(cm, c, u, (size_t)n) < 0) return -1;
364 0 0 } else if (*t->p == '[') {
367 0 0 for (c = lo; c <= hi; c++) {
369 0 0 if (t->p >= t->end || *t->p != '<') return -1;
0 0 if (t->p >= t->end || *t->p != '<') return -1;
371 0 0 if (n2 <= 0) return -1;
372 0 0 if (cmap_add_entry(cm, c, uni2, (size_t)n2) < 0) return -1;
375 0 0 if (t->p >= t->end || *t->p != ']') return -1;
0 0 if (t->p >= t->end || *t->p != ']') return -1;
396 19 19 for (i = 0; i < count; i++) {
399 19 0 if (lw < 0 || hw < 0) return -1;
0 19 if (lw < 0 || hw < 0) return -1;
401 0 19 if (cm->code_width == 0 || w > cm->code_width) cm->code_width = w;
0 0 if (cm->code_width == 0 || w > cm->code_width) cm->code_width = w;
403 0 19 if (!tok_match_keyword(t, "endcodespacerange")) return -1;
437 19 0 if (!arena || !data || len == 0) return NULL;
19 0 if (!arena || !data || len == 0) return NULL;
0 19 if (!arena || !data || len == 0) return NULL;
440 0 19 if (!cm) return NULL;
449 578 0 while (tok.p < tok.end) {
451 19 559 if (tok.p >= tok.end) break;
455 76 483 if (tok_int(&tok, &count) == 0 && count > 0) {
58 18 if (tok_int(&tok, &count) == 0 && count > 0) {
464 19 20 } else if (tok_match_keyword(&tok, "begincodespacerange")) {
470 80 19 *tok.p != ' ' && *tok.p != '\t' &&
80 0 *tok.p != ' ' && *tok.p != '\t' &&
471 99 0 *tok.p != '\r' && *tok.p != '\n' &&
80 0 *tok.p != '\r' && *tok.p != '\n' &&
79 1 *tok.p != '\r' && *tok.p != '\n' &&
472 79 0 *tok.p != '%') {
477 0 38 if (rc != 0) {
485 3646 418 *tok.p != ' ' && *tok.p != '\t' &&
3646 0 *tok.p != ' ' && *tok.p != '\t' &&
486 4064 0 *tok.p != '\r' && *tok.p != '\n' &&
3646 0 *tok.p != '\r' && *tok.p != '\n' &&
3563 83 *tok.p != '\r' && *tok.p != '\n' &&
487 3563 0 *tok.p != '%') {
490 0 501 if (tok.p == save) tok.p++; /* safety: always make progress */
495 2 17 if (cm->entry_count > 1) {
498 14 5 if (cm->range_count > 1) {
502 0 19 if (cm->code_width == 0) cm->code_width = 2; /* default to 2-byte */
506 2 17 if (cm->entry_count > 0) {
509 2 0 if (arena_entries) {
517 17 2 if (cm->range_count > 0) {
520 17 0 if (arena_ranges) {
536 103 0 if (!cmap || !out || !out_count) return 0;
103 0 if (!cmap || !out || !out_count) return 0;
0 103 if (!cmap || !out || !out_count) return 0;
539 7 96 if (cmap->entry_count > 0) {
541 13 0 while (lo < hi) {
544 7 6 if (mc == code) {
547 9 7 for (k = 0; k < e->uni_count; k++) out[k] = e->uni[k];
551 2 4 if (mc < code) lo = mid + 1;
557 96 0 if (cmap->range_count > 0) {
560 141 96 while (lo < hi) {
562 96 45 if (cmap->ranges[mid].lo <= code) lo = mid + 1;
565 96 0 if (lo > 0) {
567 96 0 if (code >= r->lo && code <= r->hi) {
96 0 if (code >= r->lo && code <= r->hi) {
579 0 0 return cmap ? cmap->code_width : 0;
583 0 0 if (!cmap) return 0;