diff options
Diffstat (limited to '')
| -rw-r--r-- | file.c | 1 | ||||
| -rw-r--r-- | proto.h | 1 | ||||
| -rw-r--r-- | table.c | 13 | 
3 files changed, 15 insertions, 0 deletions
| @@ -6448,6 +6448,7 @@ HTMLlineproc0(char *line, struct html_feed_environ *h_env, int internal)  		    do_blankline(h_env, obuf, indent, 0, h_env->limit);  		}  		save_fonteffect(h_env, obuf); +		initRenderTable();  		renderTable(tbl, tbl_width, h_env);  		restore_fonteffect(h_env, obuf);  		obuf->flag &= ~RB_IGNORE_P; @@ -393,6 +393,7 @@ extern void align(TextLine *lbuf, int width, int mode);  extern void print_item(struct table *t, int row, int col, int width, Str buf);  extern void print_sep(struct table *t, int row, int type, int maxcol, Str buf);  extern void do_refill(struct table *tbl, int row, int col, int maxlimit); +extern void initRenderTable(void);  extern void renderTable(struct table *t, int max_width,  			struct html_feed_environ *h_env);  extern struct table *begin_table(int border, int spacing, int padding, @@ -1623,6 +1623,15 @@ get_table_width(struct table *t, short *orgwidth, short *cellwidth, int flag)  #define fixed_table_width(t)\    (get_table_width(t,t->fixed_width,t->cell.fixed_width,CHECK_MINIMUM)) +#define MAX_COTABLE_LEVEL 100 +static int cotable_level; + +void +initRenderTable(void) +{ +    cotable_level = 0; +} +  void  renderCoTable(struct table *tbl, int maxlimit)  { @@ -1633,6 +1642,10 @@ renderCoTable(struct table *tbl, int maxlimit)      int i, col, row;      int indent, maxwidth; +    if (cotable_level >= MAX_COTABLE_LEVEL) +	return;	/* workaround to prevent infinite recursion */ +    cotable_level++; +      for (i = 0; i < tbl->ntable; i++) {  	t = tbl->tables[i].ptr;  	col = tbl->tables[i].col; | 
