--- a/khtml/rendering/table_layout.cpp
+++ b/khtml/rendering/table_layout.cpp
@@ -297,7 +297,8 @@ void FixedTableLayout::layout()
#endif
for ( int i = 0; available > 0 && i < nEffCols; i++ ) {
if ( width[i].isPercent() ) {
- int w = base * width[i].value() / totalPercent;
+ // totalPercent may be 0 below if all %-width specifed are 0%. (#172557)
+ int w = totalPercent ? base * width[i].value() / totalPercent : 0;
available -= w;
calcWidth[i] = w;
}
@@ -313,7 +314,8 @@ void FixedTableLayout::layout()
for ( int i = 0; available > 0 && i < nEffCols; i++ ) {
if ( width[i].isVariable() ) {
- int w = available / totalVariable;
+ // totalVariable may be 0 below if all the variable widths specified are 0.
+ int w = totalVariable ? available / totalVariable : 0;
available -= w;
calcWidth[i] = w;
totalVariable--;