| Index: Source/core/rendering/RenderTable.cpp | 
| diff --git a/Source/core/rendering/RenderTable.cpp b/Source/core/rendering/RenderTable.cpp | 
| index e83b217775b4d939c46d9e00808a67f81b412f02..a87d1c12c93a08026325789459332056186812ff 100644 | 
| --- a/Source/core/rendering/RenderTable.cpp | 
| +++ b/Source/core/rendering/RenderTable.cpp | 
| @@ -116,6 +116,14 @@ static inline void resetSectionPointerIfNotBefore(RenderTableSection*& ptr, Rend | 
| ptr = 0; | 
| } | 
|  | 
| +static inline bool needsTableSection(RenderObject* object) | 
| +{ | 
| +    // Return true if 'object' can't exist in an anonymous table without being | 
| +    // wrapped in a table section box. | 
| +    EDisplay display = object->style()->display(); | 
| +    return display != TABLE_CAPTION && display != TABLE_COLUMN_GROUP && display != TABLE_COLUMN; | 
| +} | 
| + | 
| void RenderTable::addChild(RenderObject* child, RenderObject* beforeChild) | 
| { | 
| bool wrapInAnonymousSection = !child->isOutOfFlowPositioned(); | 
| @@ -155,9 +163,7 @@ void RenderTable::addChild(RenderObject* child, RenderObject* beforeChild) | 
| default: | 
| ASSERT_NOT_REACHED(); | 
| } | 
| -    } else if (child->isTableCell() || child->isTableRow()) | 
| -        wrapInAnonymousSection = true; | 
| -    else | 
| +    } else | 
| wrapInAnonymousSection = true; | 
|  | 
| if (child->isTableSection()) | 
| @@ -185,7 +191,7 @@ void RenderTable::addChild(RenderObject* child, RenderObject* beforeChild) | 
| } | 
|  | 
| RenderObject* lastBox = beforeChild; | 
| -    while (lastBox && lastBox->parent()->isAnonymous() && !lastBox->isTableSection() && lastBox->style()->display() != TABLE_CAPTION && lastBox->style()->display() != TABLE_COLUMN_GROUP) | 
| +    while (lastBox && lastBox->parent()->isAnonymous() && !lastBox->isTableSection() && needsTableSection(lastBox)) | 
| lastBox = lastBox->parent(); | 
| if (lastBox && lastBox->isAnonymous() && !isAfterContent(lastBox)) { | 
| if (beforeChild == lastBox) | 
| @@ -194,7 +200,7 @@ void RenderTable::addChild(RenderObject* child, RenderObject* beforeChild) | 
| return; | 
| } | 
|  | 
| -    if (beforeChild && !beforeChild->isTableSection() && beforeChild->style()->display() != TABLE_CAPTION && beforeChild->style()->display() != TABLE_COLUMN_GROUP) | 
| +    if (beforeChild && !beforeChild->isTableSection() && needsTableSection(beforeChild)) | 
| beforeChild = 0; | 
|  | 
| RenderTableSection* section = RenderTableSection::createAnonymousWithParentRenderer(this); | 
|  |