summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
d9f325b)
When adjacent rows or columns contain only spanned cells and no rules give
the rows or columns a natural minimum height or width, this triggers a
special case in distribute_spanned_width(). This special case had not been
tested and (therefore) was broken. This commit fixes the problem and adds
test cases to prevent it from recurring.
Bug #31346.
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.
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.)
- 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;
d = d0 * d1;
if (total_unspanned > 0)
d *= 2.0;
+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
AT_SETUP([5 big narrow cells])
AT_KEYWORDS([render rendering])
AT_DATA([input], [1 5