@@ -477,7 +477,13 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node,
477477 case CMARK_NODE_FOOTNOTE_REFERENCE :
478478 if (entering ) {
479479 LIT ("[^" );
480- OUT (node -> user_data , false, LITERAL );
480+
481+ char * footnote_label = renderer -> mem -> calloc (1 , (sizeof (char ) * node -> parent_footnote_def -> as .literal .len ) + 1 );
482+ memmove (footnote_label , node -> parent_footnote_def -> as .literal .data , node -> parent_footnote_def -> as .literal .len );
483+
484+ OUT (footnote_label , false, LITERAL );
485+ renderer -> mem -> free (footnote_label );
486+
481487 LIT ("]" );
482488 }
483489 break ;
@@ -487,10 +493,12 @@ static int S_render_node(cmark_renderer *renderer, cmark_node *node,
487493 renderer -> footnote_ix += 1 ;
488494 LIT ("[^" );
489495
490- char * str = renderer -> mem -> calloc (1 , (sizeof (char ) * node -> as .literal .len ) + 1 );
491- memmove (str , node -> as .literal .data , node -> as .literal .len );
496+ char * footnote_label = renderer -> mem -> calloc (1 , (sizeof (char ) * node -> as .literal .len ) + 1 );
497+ memmove (footnote_label , node -> as .literal .data , node -> as .literal .len );
498+
499+ OUT (footnote_label , false, LITERAL );
500+ renderer -> mem -> free (footnote_label );
492501
493- OUT (str , false, LITERAL );
494502 LIT ("]:\n" );
495503
496504 cmark_strbuf_puts (renderer -> prefix , " " );
0 commit comments