• mstensho@opera.com's avatar
    Don't use rowIndex() if needsCellRecalc(). · 881726f5
    mstensho@opera.com authored
    The row index may be bogus or even unset in that case.
    
    Rows may be inserted with an initially unknown row index. This happens
    when the row isn't inserted at the end of its table section, and also
    when splitting an anonymous row. This would lead to an assertion failure
    for row()->rowIndexWasSet() in RenderTableCell::styleDidChange().
    rowIndex() is used there in a call to
    RenderTableSection::rowLogicalHeightChanged(). rowIndex() is also used
    in a similar way in RenderTableRow::styleDidChange(), albeit without
    asserting first.
    
    styleDidChange() may be called while needsCellRecalc() is set, which
    may mean that row index hasn't been calculated yet (or is bogus). We
    could of course just recalculate the cells (which also involves
    calculating all row indices) in styleDidChange(), but it's not really
    necessary, since the row index was just needed in order to call
    rowLogicalHeightChanged(), which just bails anyway if cells need recalc.
    
    So the solution is to pass a RenderTableRow instead of the row index to
    rowLogicalHeightChanged(). This way we don't call rowIndex() when
    row index is unknown.
    
    BUG=397442
    
    Review URL: https://codereview.chromium.org/532513002
    
    git-svn-id: svn://svn.chromium.org/blink/trunk@181637 bbb929c8-8fbe-4397-9dbb-9b2b20218538
    881726f5
split-anonymous-crash-expected.txt 105 Bytes