w1 by the common denominator of all three calculations (d), dividing that
out in the column width calculation, and then keeping the remainder for
the next iteration.
+
+ (We actually compute the unspanned width of a column as twice the
+ unspanned width, plus the width of the rule on the left, plus the width of
+ the rule on the right. That way each rule contributes to both the cell on
+ its left and on its right.)
*/
d0 = n;
- d1 = total_unspanned * 2.0;
+ d1 = 2.0 * (total_unspanned > 0 ? total_unspanned : 1.0);
d = d0 * d1;
if (total_unspanned > 0)
d *= 2.0;
])
AT_CLEANUP
+dnl This checks for bug #31346, a segmentation fault that surfaced
+dnl when two or more rows had no unspanned cells and no rules.
+AT_SETUP([joined rows only, no rules])
+AT_KEYWORDS([render rendering])
+AT_DATA([input], [2 2
+2*1 ab\ncd\nef
+2*1 hij\nklm\nnop
+])
+AT_CHECK([render-test input], [0], [dnl
+abhij
+cdklm
+efnop
+])
+AT_CLEANUP
+
+AT_SETUP([joined columns only, no rules])
+AT_KEYWORDS([render rendering])
+AT_DATA([input], [2 2
+1*2 abc\ndef
+1*2 hij\nklm\nnop
+])
+AT_CHECK([render-test input], [0], [dnl
+abc
+def
+hij
+klm
+nop
+])
+AT_CLEANUP
+
AT_SETUP([5 big narrow cells])
AT_KEYWORDS([render rendering])
AT_DATA([input], [1 5