| 45 | } |
| 46 | |
| 47 | void cmark_reference_create(cmark_reference_map *map, cmark_chunk *label, |
| 48 | cmark_chunk *url, cmark_chunk *title) { |
| 49 | cmark_reference *ref; |
| 50 | unsigned char *reflabel = normalize_reference(map->mem, label); |
| 51 | |
| 52 | /* empty reference name, or composed from only whitespace */ |
| 53 | if (reflabel == NULL) |
| 54 | return; |
| 55 | |
| 56 | assert(map->sorted == NULL); |
| 57 | |
| 58 | ref = (cmark_reference *)map->mem->calloc(1, sizeof(*ref)); |
| 59 | ref->label = reflabel; |
| 60 | ref->url = cmark_clean_url(map->mem, url); |
| 61 | ref->title = cmark_clean_title(map->mem, title); |
| 62 | ref->age = map->size; |
| 63 | ref->next = map->refs; |
| 64 | |
| 65 | if (ref->url != NULL) |
| 66 | ref->size += (int)strlen((char*)ref->url); |
| 67 | if (ref->title != NULL) |
| 68 | ref->size += (int)strlen((char*)ref->title); |
| 69 | |
| 70 | map->refs = ref; |
| 71 | map->size++; |
| 72 | } |
| 73 | |
| 74 | static int |
| 75 | labelcmp(const unsigned char *a, const unsigned char *b) { |
no test coverage detected