--- 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--;