This fixes (a rare) segfault.  The actual reason for this segfault is
that lynx ignores non-breakable space in most situations; the table
logic was not expecting this, thus a branch was entered which should
not have been entered at all.

Until the question with non-breakable spaces is resolved, this fix
hardens the branch in question so that it does not break even if
entered this way.  ;-)

Enjoy,
Ilya

--- ./src/TRSTable.c~   Fri Jun 20 18:57:27 2003
+++ ./src/TRSTable.c    Thu Jul 17 16:39:32 2003
@@ -585,12 +585,17 @@ PRIVATE int Stbl_addCellToRow ARGS9(
        while (me->ncells + colspan + 1 > me->allocated + growby)
            growby += CELLS_GROWBY;
        if (growby) {
-           if (me->allocated == 0 && !me->cells) {
+           if (!me->cells) {
                cells = typecallocn(STable_cellinfo, growby);
            } else {
-               cells = realloc(me->cells,
-                                 (me->allocated + growby)
-                                 * sizeof(STable_cellinfo));
+               if (me->allocated == 0) { /* Put into pool */
+                   cells = typecallocn(STable_cellinfo, growby);
+                   memcpy(cells, me->cells, 
+                          me->ncells * sizeof(STable_cellinfo));
+               } else
+                   cells = realloc(me->cells,
+                                   (me->allocated + growby)
+                                   * sizeof(STable_cellinfo));
                for (i = 0; cells && i < growby; i++) {
                    cells[me->allocated + i].alignment = HT_ALIGN_NONE;
                }

; To UNSUBSCRIBE: Send "unsubscribe lynx-dev" to [EMAIL PROTECTED]

Reply via email to