Fossil SCM

Make the no-op rendering callbacks in backlink.c type-compatible with the declarations in mkd_renderer, doing away with a theoretically possible undefined behavior and the related compiler cast warnings.

danield 2023-03-07 13:00 trunk
Commit d3434fd8cc85d826f081bbb128464f03ddc9501a56919c4193f9f3036004079f
1 file changed +59 -29
+59 -29
--- src/backlink.c
+++ src/backlink.c
@@ -252,49 +252,79 @@
252252
253253
backlink_create(p, zTarget, nTarget);
254254
return 1;
255255
}
256256
257
-/* No-op routine for the rendering callbacks that we do not need */
258
-static void mkdn_noop0(Blob *x){ return; }
259
-static int mkdn_noop1(Blob *x){ return 1; }
257
+/* No-op routines for the rendering callbacks that we do not need */
258
+static void mkdn_noop_prolog(Blob *b, void *v){ return; }
259
+static void (*mkdn_noop_epilog)(Blob*, void*) = mkdn_noop_prolog;
260
+static void mkdn_noop_footnotes(Blob *b1, const Blob *b2, void *v){ return; }
261
+static void mkdn_noop_blockcode(Blob *b1, Blob *b2, void *v){ return; }
262
+static void (*mkdn_noop_blockquote)(Blob*, Blob*, void*) = mkdn_noop_blockcode;
263
+static void (*mkdn_noop_blockhtml)(Blob*, Blob*, void*) = mkdn_noop_blockcode;
264
+static void mkdn_noop_header(Blob *b1, Blob *b2, int i, void *v){ return; }
265
+static void (*mkdn_noop_hrule)(Blob*, void*) = mkdn_noop_prolog;
266
+static void (*mkdn_noop_list)(Blob*, Blob*, int, void*) = mkdn_noop_header;
267
+static void (*mkdn_noop_listitem)(Blob*, Blob*, int, void*) = mkdn_noop_header;
268
+static void (*mkdn_noop_paragraph)(Blob*, Blob*, void*) = mkdn_noop_blockcode;
269
+static void mkdn_noop_table(Blob *b1, Blob *b2, Blob *b3, void *v){ return; }
270
+static void (*mkdn_noop_table_cell)(Blob*, Blob*, int,
271
+ void*) = mkdn_noop_header;
272
+static void (*mkdn_noop_table_row)(Blob*, Blob*, int,
273
+ void*) = mkdn_noop_header;
274
+static void mkdn_noop_footnoteitm(Blob *b1, const Blob *b2, int i1, int i2,
275
+ void *v){ return; }
276
+static int mkdn_noop_autolink(Blob *b1, Blob *b2, enum mkd_autolink e,
277
+ void *v){ return 1; }
278
+static int mkdn_noop_codespan(Blob *b1, Blob *b2, int i, void *v){ return 1; }
279
+static int mkdn_noop_emphasis(Blob *b1, Blob *b2, char c, void *v){ return 1; }
280
+static int (*mkdn_noop_dbl_emphas)(Blob*, Blob*, char,
281
+ void*) = mkdn_noop_emphasis;
282
+static int mkdn_noop_image(Blob *b1, Blob *b2, Blob *b3, Blob *b4,
283
+ void *v){ return 1; }
284
+static int mkdn_noop_linebreak(Blob *b1, void *v){ return 1; }
285
+static int mkdn_noop_r_html_tag(Blob *b1, Blob *b2, void *v){ return 1; }
286
+static int (*mkdn_noop_tri_emphas)(Blob*, Blob*, char,
287
+ void*) = mkdn_noop_emphasis;
288
+static int mkdn_noop_footnoteref(Blob *b1, const Blob *b2, const Blob *b3,
289
+ int i1, int i2, void *v){ return 1; }
260290
261291
/*
262292
** Scan markdown text and add self-hyperlinks to the BACKLINK table.
263293
*/
264294
void markdown_extract_links(
265295
char *zInputText,
266296
Backlink *p
267297
){
268298
struct mkd_renderer html_renderer = {
269
- /* prolog */ (void(*)(Blob*,void*))mkdn_noop0,
270
- /* epilog */ (void(*)(Blob*,void*))mkdn_noop0,
271
- /* footnotes */ (void(*)(Blob*,const Blob*, void*))mkdn_noop0,
272
-
273
- /* blockcode */ (void(*)(Blob*,Blob*,void*))mkdn_noop0,
274
- /* blockquote */ (void(*)(Blob*,Blob*,void*))mkdn_noop0,
275
- /* blockhtml */ (void(*)(Blob*,Blob*,void*))mkdn_noop0,
276
- /* header */ (void(*)(Blob*,Blob*,int,void*))mkdn_noop0,
277
- /* hrule */ (void(*)(Blob*,void*))mkdn_noop0,
278
- /* list */ (void(*)(Blob*,Blob*,int,void*))mkdn_noop0,
279
- /* listitem */ (void(*)(Blob*,Blob*,int,void*))mkdn_noop0,
280
- /* paragraph */ (void(*)(Blob*,Blob*,void*))mkdn_noop0,
281
- /* table */ (void(*)(Blob*,Blob*,Blob*,void*))mkdn_noop0,
282
- /* table_cell */ (void(*)(Blob*,Blob*,int,void*))mkdn_noop0,
283
- /* table_row */ (void(*)(Blob*,Blob*,int,void*))mkdn_noop0,
284
- /* footnoteitm*/ (void(*)(Blob*,const Blob*,int,int,void*))mkdn_noop0,
285
-
286
- /* autolink */ (int(*)(Blob*,Blob*,enum mkd_autolink,void*))mkdn_noop1,
287
- /* codespan */ (int(*)(Blob*,Blob*,int,void*))mkdn_noop1,
288
- /* dbl_emphas */ (int(*)(Blob*,Blob*,char,void*))mkdn_noop1,
289
- /* emphasis */ (int(*)(Blob*,Blob*,char,void*))mkdn_noop1,
290
- /* image */ (int(*)(Blob*,Blob*,Blob*,Blob*,void*))mkdn_noop1,
291
- /* linebreak */ (int(*)(Blob*,void*))mkdn_noop1,
299
+ /* prolog */ mkdn_noop_prolog,
300
+ /* epilog */ mkdn_noop_epilog,
301
+ /* footnotes */ mkdn_noop_footnotes,
302
+
303
+ /* blockcode */ mkdn_noop_blockcode,
304
+ /* blockquote */ mkdn_noop_blockquote,
305
+ /* blockhtml */ mkdn_noop_blockhtml,
306
+ /* header */ mkdn_noop_header,
307
+ /* hrule */ mkdn_noop_hrule,
308
+ /* list */ mkdn_noop_list,
309
+ /* listitem */ mkdn_noop_listitem,
310
+ /* paragraph */ mkdn_noop_paragraph,
311
+ /* table */ mkdn_noop_table,
312
+ /* table_cell */ mkdn_noop_table_cell,
313
+ /* table_row */ mkdn_noop_table_row,
314
+ /* footnoteitm*/ mkdn_noop_footnoteitm,
315
+
316
+ /* autolink */ mkdn_noop_autolink,
317
+ /* codespan */ mkdn_noop_codespan,
318
+ /* dbl_emphas */ mkdn_noop_dbl_emphas,
319
+ /* emphasis */ mkdn_noop_emphasis,
320
+ /* image */ mkdn_noop_image,
321
+ /* linebreak */ mkdn_noop_linebreak,
292322
/* link */ backlink_md_link,
293
- /* r_html_tag */ (int(*)(Blob*,Blob*,void*))mkdn_noop1,
294
- /* tri_emphas */ (int(*)(Blob*,Blob*,char,void*))mkdn_noop1,
295
- /* footnoteref*/ (int(*)(Blob*,const Blob*,const Blob*,int,int,void*))mkdn_noop1,
323
+ /* r_html_tag */ mkdn_noop_r_html_tag,
324
+ /* tri_emphas */ mkdn_noop_tri_emphas,
325
+ /* footnoteref*/ mkdn_noop_footnoteref,
296326
297327
0, /* entity */
298328
0, /* normal_text */
299329
"*_", /* emphasis characters */
300330
0 /* client data */
301331
--- src/backlink.c
+++ src/backlink.c
@@ -252,49 +252,79 @@
252
253 backlink_create(p, zTarget, nTarget);
254 return 1;
255 }
256
257 /* No-op routine for the rendering callbacks that we do not need */
258 static void mkdn_noop0(Blob *x){ return; }
259 static int mkdn_noop1(Blob *x){ return 1; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
260
261 /*
262 ** Scan markdown text and add self-hyperlinks to the BACKLINK table.
263 */
264 void markdown_extract_links(
265 char *zInputText,
266 Backlink *p
267 ){
268 struct mkd_renderer html_renderer = {
269 /* prolog */ (void(*)(Blob*,void*))mkdn_noop0,
270 /* epilog */ (void(*)(Blob*,void*))mkdn_noop0,
271 /* footnotes */ (void(*)(Blob*,const Blob*, void*))mkdn_noop0,
272
273 /* blockcode */ (void(*)(Blob*,Blob*,void*))mkdn_noop0,
274 /* blockquote */ (void(*)(Blob*,Blob*,void*))mkdn_noop0,
275 /* blockhtml */ (void(*)(Blob*,Blob*,void*))mkdn_noop0,
276 /* header */ (void(*)(Blob*,Blob*,int,void*))mkdn_noop0,
277 /* hrule */ (void(*)(Blob*,void*))mkdn_noop0,
278 /* list */ (void(*)(Blob*,Blob*,int,void*))mkdn_noop0,
279 /* listitem */ (void(*)(Blob*,Blob*,int,void*))mkdn_noop0,
280 /* paragraph */ (void(*)(Blob*,Blob*,void*))mkdn_noop0,
281 /* table */ (void(*)(Blob*,Blob*,Blob*,void*))mkdn_noop0,
282 /* table_cell */ (void(*)(Blob*,Blob*,int,void*))mkdn_noop0,
283 /* table_row */ (void(*)(Blob*,Blob*,int,void*))mkdn_noop0,
284 /* footnoteitm*/ (void(*)(Blob*,const Blob*,int,int,void*))mkdn_noop0,
285
286 /* autolink */ (int(*)(Blob*,Blob*,enum mkd_autolink,void*))mkdn_noop1,
287 /* codespan */ (int(*)(Blob*,Blob*,int,void*))mkdn_noop1,
288 /* dbl_emphas */ (int(*)(Blob*,Blob*,char,void*))mkdn_noop1,
289 /* emphasis */ (int(*)(Blob*,Blob*,char,void*))mkdn_noop1,
290 /* image */ (int(*)(Blob*,Blob*,Blob*,Blob*,void*))mkdn_noop1,
291 /* linebreak */ (int(*)(Blob*,void*))mkdn_noop1,
292 /* link */ backlink_md_link,
293 /* r_html_tag */ (int(*)(Blob*,Blob*,void*))mkdn_noop1,
294 /* tri_emphas */ (int(*)(Blob*,Blob*,char,void*))mkdn_noop1,
295 /* footnoteref*/ (int(*)(Blob*,const Blob*,const Blob*,int,int,void*))mkdn_noop1,
296
297 0, /* entity */
298 0, /* normal_text */
299 "*_", /* emphasis characters */
300 0 /* client data */
301
--- src/backlink.c
+++ src/backlink.c
@@ -252,49 +252,79 @@
252
253 backlink_create(p, zTarget, nTarget);
254 return 1;
255 }
256
257 /* No-op routines for the rendering callbacks that we do not need */
258 static void mkdn_noop_prolog(Blob *b, void *v){ return; }
259 static void (*mkdn_noop_epilog)(Blob*, void*) = mkdn_noop_prolog;
260 static void mkdn_noop_footnotes(Blob *b1, const Blob *b2, void *v){ return; }
261 static void mkdn_noop_blockcode(Blob *b1, Blob *b2, void *v){ return; }
262 static void (*mkdn_noop_blockquote)(Blob*, Blob*, void*) = mkdn_noop_blockcode;
263 static void (*mkdn_noop_blockhtml)(Blob*, Blob*, void*) = mkdn_noop_blockcode;
264 static void mkdn_noop_header(Blob *b1, Blob *b2, int i, void *v){ return; }
265 static void (*mkdn_noop_hrule)(Blob*, void*) = mkdn_noop_prolog;
266 static void (*mkdn_noop_list)(Blob*, Blob*, int, void*) = mkdn_noop_header;
267 static void (*mkdn_noop_listitem)(Blob*, Blob*, int, void*) = mkdn_noop_header;
268 static void (*mkdn_noop_paragraph)(Blob*, Blob*, void*) = mkdn_noop_blockcode;
269 static void mkdn_noop_table(Blob *b1, Blob *b2, Blob *b3, void *v){ return; }
270 static void (*mkdn_noop_table_cell)(Blob*, Blob*, int,
271 void*) = mkdn_noop_header;
272 static void (*mkdn_noop_table_row)(Blob*, Blob*, int,
273 void*) = mkdn_noop_header;
274 static void mkdn_noop_footnoteitm(Blob *b1, const Blob *b2, int i1, int i2,
275 void *v){ return; }
276 static int mkdn_noop_autolink(Blob *b1, Blob *b2, enum mkd_autolink e,
277 void *v){ return 1; }
278 static int mkdn_noop_codespan(Blob *b1, Blob *b2, int i, void *v){ return 1; }
279 static int mkdn_noop_emphasis(Blob *b1, Blob *b2, char c, void *v){ return 1; }
280 static int (*mkdn_noop_dbl_emphas)(Blob*, Blob*, char,
281 void*) = mkdn_noop_emphasis;
282 static int mkdn_noop_image(Blob *b1, Blob *b2, Blob *b3, Blob *b4,
283 void *v){ return 1; }
284 static int mkdn_noop_linebreak(Blob *b1, void *v){ return 1; }
285 static int mkdn_noop_r_html_tag(Blob *b1, Blob *b2, void *v){ return 1; }
286 static int (*mkdn_noop_tri_emphas)(Blob*, Blob*, char,
287 void*) = mkdn_noop_emphasis;
288 static int mkdn_noop_footnoteref(Blob *b1, const Blob *b2, const Blob *b3,
289 int i1, int i2, void *v){ return 1; }
290
291 /*
292 ** Scan markdown text and add self-hyperlinks to the BACKLINK table.
293 */
294 void markdown_extract_links(
295 char *zInputText,
296 Backlink *p
297 ){
298 struct mkd_renderer html_renderer = {
299 /* prolog */ mkdn_noop_prolog,
300 /* epilog */ mkdn_noop_epilog,
301 /* footnotes */ mkdn_noop_footnotes,
302
303 /* blockcode */ mkdn_noop_blockcode,
304 /* blockquote */ mkdn_noop_blockquote,
305 /* blockhtml */ mkdn_noop_blockhtml,
306 /* header */ mkdn_noop_header,
307 /* hrule */ mkdn_noop_hrule,
308 /* list */ mkdn_noop_list,
309 /* listitem */ mkdn_noop_listitem,
310 /* paragraph */ mkdn_noop_paragraph,
311 /* table */ mkdn_noop_table,
312 /* table_cell */ mkdn_noop_table_cell,
313 /* table_row */ mkdn_noop_table_row,
314 /* footnoteitm*/ mkdn_noop_footnoteitm,
315
316 /* autolink */ mkdn_noop_autolink,
317 /* codespan */ mkdn_noop_codespan,
318 /* dbl_emphas */ mkdn_noop_dbl_emphas,
319 /* emphasis */ mkdn_noop_emphasis,
320 /* image */ mkdn_noop_image,
321 /* linebreak */ mkdn_noop_linebreak,
322 /* link */ backlink_md_link,
323 /* r_html_tag */ mkdn_noop_r_html_tag,
324 /* tri_emphas */ mkdn_noop_tri_emphas,
325 /* footnoteref*/ mkdn_noop_footnoteref,
326
327 0, /* entity */
328 0, /* normal_text */
329 "*_", /* emphasis characters */
330 0 /* client data */
331

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button