w3m

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/w3m.git/
Log | Files | Refs | README

commit 2ad6d4f263e00ab4883379efe7d7397231cf2ae6
parent c39231cffea5187ff4b01afe9e28df0716a2289e
Author: ukai <ukai>
Date:   Tue,  9 Apr 2002 14:53:54 +0000

[w3m-dev 03169] Can't calculate table height if number of cells > 20.
* table.c (check_table_height): change row, rowspan, indexarray, height
		from array to pointer
From: Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>

Diffstat:
MChangeLog | 6++++++
Mtable.c | 51++++++++++++++++++++++++++++++++++-----------------
2 files changed, 40 insertions(+), 17 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,5 +1,11 @@ 2002-04-09 Hironori Sakamoto <hsaka@mth.biglobe.ne.jp> + * [w3m-dev 03169] Can't calculate table height if number of cells > 20. + * table.c (check_table_height): change row, rowspan, indexarray, height + from array to pointer + +2002-04-09 Hironori Sakamoto <hsaka@mth.biglobe.ne.jp> + * [w3m-dev 03167] xface2xbm -> xface2xpm (current imlib can't handle XBM) * configure: s/XFACE2XBM/XFACE2XPM/ * config.h.dist: ditto diff --git a/table.c b/table.c @@ -1475,14 +1475,16 @@ check_table_height(struct table *t) { int i, j, k; struct { - short row[MAXCELL]; - short rowspan[MAXCELL]; - char indexarray[MAXCELL]; + short *row; + short *rowspan; + char *indexarray; short maxcell; - short height[MAXCELL]; + short size; + short *height; } cell; int space = 0; + cell.size = 0; cell.maxcell = -1; for (j = 0; j <= t->maxrow; j++) { @@ -1509,21 +1511,36 @@ check_table_height(struct table *t) if (cell.row[idx] == j && cell.rowspan[idx] == rowspan) c = idx; } - if (c < MAXCELL) { - if (c > cell.maxcell) { - cell.maxcell++; - cell.row[cell.maxcell] = j; - cell.rowspan[cell.maxcell] = rowspan; - cell.height[cell.maxcell] = 0; - if (cell.maxcell > k) - bcopy(cell.indexarray + k, cell.indexarray + k + 1, - cell.maxcell - k); - cell.indexarray[k] = cell.maxcell; + if (c >= cell.size) { + if (cell.size == 0) { + cell.size = max(MAXCELL, c + 1); + cell.row = NewAtom_N(short, cell.size); + cell.rowspan = NewAtom_N(short, cell.size); + cell.indexarray = NewAtom_N(char, cell.size); + cell.height = NewAtom_N(short, cell.size); + } else { + cell.size = max(cell.size + MAXCELL, c + 1); + cell.row = New_Reuse(short, cell.row, cell.size); + cell.rowspan = New_Reuse(short, cell.rowspan, + cell.size); + cell.indexarray = New_Reuse(char, cell.indexarray, + cell.size); + cell.height = New_Reuse(short, cell.height, cell.size); } - - if (cell.height[c] < t_dep) - cell.height[c] = t_dep; } + if (c > cell.maxcell) { + cell.maxcell++; + cell.row[cell.maxcell] = j; + cell.rowspan[cell.maxcell] = rowspan; + cell.height[cell.maxcell] = 0; + if (cell.maxcell > k) + bcopy(cell.indexarray + k, cell.indexarray + k + 1, + cell.maxcell - k); + cell.indexarray[k] = cell.maxcell; + } + + if (cell.height[c] < t_dep) + cell.height[c] = t_dep; continue; } if (t->tabheight[j] < t_dep)