| Index: third_party/WebKit/Source/core/layout/ColumnBalancer.cpp | 
| diff --git a/third_party/WebKit/Source/core/layout/ColumnBalancer.cpp b/third_party/WebKit/Source/core/layout/ColumnBalancer.cpp | 
| index 3023993789bdeda86e8e50571691a2fda2d9f2e5..45607bdde8b166eb4b9092b18e8d059939e91489 100644 | 
| --- a/third_party/WebKit/Source/core/layout/ColumnBalancer.cpp | 
| +++ b/third_party/WebKit/Source/core/layout/ColumnBalancer.cpp | 
| @@ -325,6 +325,15 @@ void MinimumSpaceShortageFinder::examineLine(const RootInlineBox& line) | 
| ASSERT(isFirstAfterBreak(lineTopInFlowThread) || !line.paginationStrut() || !isLogicalTopWithinBounds(lineTopInFlowThread - line.paginationStrut())); | 
| if (isFirstAfterBreak(lineTopInFlowThread)) | 
| recordSpaceShortage(lineHeight - line.paginationStrut()); | 
| + | 
| +    // Even if the line box itself fits fine inside a column, some content may overflow the line | 
| +    // box bottom (due to restrictive line-height, for instance). We should check if some portion | 
| +    // of said overflow ends up in the next column. That counts as space shortage. | 
| +    LayoutUnit lineBottomWithOverflow = lineTopInFlowThread + line.lineBottom() - lineTop; | 
| +    if (group().columnLogicalTopForOffset(lineTopInFlowThread) != group().columnLogicalTopForOffset(lineBottomWithOverflow)) { | 
| +        LayoutUnit shortage = lineBottomWithOverflow - group().columnLogicalTopForOffset(lineBottomWithOverflow); | 
| +        recordSpaceShortage(shortage); | 
| +    } | 
| } | 
|  | 
| } // namespace blink | 
|  |