Fossil SCM
Parse inline footnotes even if a renderer does not define a callback for rendering of footnote markers. This seems more correct even though the current implementation of backlink processor does define such callback as an empty function.
Commit
e06c12d1760bf49c0358835c733bdb6e63ee95c04ddc4e92e2b3e588469b26a1
Parent
fe3157803f15b68…
1 file changed
+5
-3
+5
-3
| --- src/markdown.c | ||
| +++ src/markdown.c | ||
| @@ -1238,16 +1238,18 @@ | ||
| 1238 | 1238 | size_t size |
| 1239 | 1239 | ){ |
| 1240 | 1240 | size_t end; |
| 1241 | 1241 | const struct footnote* fn; |
| 1242 | 1242 | |
| 1243 | - if( size<4 || data[1]!='^' || !rndr->make.footnote_ref ) return 0; | |
| 1243 | + if( size<4 || data[1]!='^' ) return 0; | |
| 1244 | 1244 | end = matching_bracket_offset(data, data+size); |
| 1245 | 1245 | if( !end ) return 0; |
| 1246 | 1246 | fn = add_inline_footnote(rndr, data+2, end-2); |
| 1247 | 1247 | if( !fn ) return 0; |
| 1248 | - rndr->make.footnote_ref(ob,0,&fn->upc,fn->iMark,1,rndr->make.opaque); | |
| 1248 | + if( rndr->make.footnote_ref ){ | |
| 1249 | + rndr->make.footnote_ref(ob,0,&fn->upc,fn->iMark,1,rndr->make.opaque); | |
| 1250 | + } | |
| 1249 | 1251 | return end+1; |
| 1250 | 1252 | } |
| 1251 | 1253 | |
| 1252 | 1254 | /* char_link -- '[': parsing a link or an image */ |
| 1253 | 1255 | static size_t char_link( |
| @@ -1374,11 +1376,11 @@ | ||
| 1374 | 1376 | /* calling the relevant rendering function */ |
| 1375 | 1377 | if( is_img ){ |
| 1376 | 1378 | if( blob_size(ob)>0 && blob_buffer(ob)[blob_size(ob)-1]=='!' ) ob->nUsed--; |
| 1377 | 1379 | ret = rndr->make.image(ob, link, title, content, rndr->make.opaque); |
| 1378 | 1380 | }else if(fn){ |
| 1379 | - if(rndr->make.footnote_ref){ | |
| 1381 | + if( rndr->make.footnote_ref ){ | |
| 1380 | 1382 | ret = rndr->make.footnote_ref(ob, content, &fn->upc, fn->iMark, fn->nUsed, |
| 1381 | 1383 | rndr->make.opaque); |
| 1382 | 1384 | } |
| 1383 | 1385 | }else{ |
| 1384 | 1386 | ret = rndr->make.link(ob, link, title, content, rndr->make.opaque); |
| 1385 | 1387 |
| --- src/markdown.c | |
| +++ src/markdown.c | |
| @@ -1238,16 +1238,18 @@ | |
| 1238 | size_t size |
| 1239 | ){ |
| 1240 | size_t end; |
| 1241 | const struct footnote* fn; |
| 1242 | |
| 1243 | if( size<4 || data[1]!='^' || !rndr->make.footnote_ref ) return 0; |
| 1244 | end = matching_bracket_offset(data, data+size); |
| 1245 | if( !end ) return 0; |
| 1246 | fn = add_inline_footnote(rndr, data+2, end-2); |
| 1247 | if( !fn ) return 0; |
| 1248 | rndr->make.footnote_ref(ob,0,&fn->upc,fn->iMark,1,rndr->make.opaque); |
| 1249 | return end+1; |
| 1250 | } |
| 1251 | |
| 1252 | /* char_link -- '[': parsing a link or an image */ |
| 1253 | static size_t char_link( |
| @@ -1374,11 +1376,11 @@ | |
| 1374 | /* calling the relevant rendering function */ |
| 1375 | if( is_img ){ |
| 1376 | if( blob_size(ob)>0 && blob_buffer(ob)[blob_size(ob)-1]=='!' ) ob->nUsed--; |
| 1377 | ret = rndr->make.image(ob, link, title, content, rndr->make.opaque); |
| 1378 | }else if(fn){ |
| 1379 | if(rndr->make.footnote_ref){ |
| 1380 | ret = rndr->make.footnote_ref(ob, content, &fn->upc, fn->iMark, fn->nUsed, |
| 1381 | rndr->make.opaque); |
| 1382 | } |
| 1383 | }else{ |
| 1384 | ret = rndr->make.link(ob, link, title, content, rndr->make.opaque); |
| 1385 |
| --- src/markdown.c | |
| +++ src/markdown.c | |
| @@ -1238,16 +1238,18 @@ | |
| 1238 | size_t size |
| 1239 | ){ |
| 1240 | size_t end; |
| 1241 | const struct footnote* fn; |
| 1242 | |
| 1243 | if( size<4 || data[1]!='^' ) return 0; |
| 1244 | end = matching_bracket_offset(data, data+size); |
| 1245 | if( !end ) return 0; |
| 1246 | fn = add_inline_footnote(rndr, data+2, end-2); |
| 1247 | if( !fn ) return 0; |
| 1248 | if( rndr->make.footnote_ref ){ |
| 1249 | rndr->make.footnote_ref(ob,0,&fn->upc,fn->iMark,1,rndr->make.opaque); |
| 1250 | } |
| 1251 | return end+1; |
| 1252 | } |
| 1253 | |
| 1254 | /* char_link -- '[': parsing a link or an image */ |
| 1255 | static size_t char_link( |
| @@ -1374,11 +1376,11 @@ | |
| 1376 | /* calling the relevant rendering function */ |
| 1377 | if( is_img ){ |
| 1378 | if( blob_size(ob)>0 && blob_buffer(ob)[blob_size(ob)-1]=='!' ) ob->nUsed--; |
| 1379 | ret = rndr->make.image(ob, link, title, content, rndr->make.opaque); |
| 1380 | }else if(fn){ |
| 1381 | if( rndr->make.footnote_ref ){ |
| 1382 | ret = rndr->make.footnote_ref(ob, content, &fn->upc, fn->iMark, fn->nUsed, |
| 1383 | rndr->make.opaque); |
| 1384 | } |
| 1385 | }else{ |
| 1386 | ret = rndr->make.link(ob, link, title, content, rndr->make.opaque); |
| 1387 |