diff --git a/layout/html/base/src/nsInlineReflow.cpp b/layout/html/base/src/nsInlineReflow.cpp
index feac79d30572..87456aecaa55 100644
--- a/layout/html/base/src/nsInlineReflow.cpp
+++ b/layout/html/base/src/nsInlineReflow.cpp
@@ -69,6 +69,21 @@ nsInlineReflow::~nsInlineReflow()
void
nsInlineReflow::Init(nscoord aX, nscoord aY, nscoord aWidth, nscoord aHeight)
{
+#ifdef NS_DEBUG
+ if ((aWidth > 100000) && (aWidth != NS_UNCONSTRAINEDSIZE)) {
+ mOuterFrame->ListTag(stdout);
+ printf(": Init: bad caller: width WAS %d(0x%x)\n",
+ aWidth, aWidth);
+ aWidth = NS_UNCONSTRAINEDSIZE;
+ }
+ if ((aHeight > 100000) && (aHeight != NS_UNCONSTRAINEDSIZE)) {
+ mOuterFrame->ListTag(stdout);
+ printf(": Init: bad caller: height WAS %d(0x%x)\n",
+ aHeight, aHeight);
+ aHeight = NS_UNCONSTRAINEDSIZE;
+ }
+#endif
+
mLeftEdge = aX;
mX = aX;
if (NS_UNCONSTRAINEDSIZE == aWidth) {
@@ -102,6 +117,21 @@ nsInlineReflow::UpdateBand(nscoord aX, nscoord aY,
{
NS_PRECONDITION(mX == mLeftEdge, "update-band called after place-frame");
+#ifdef NS_DEBUG
+ if ((aWidth > 100000) && (aWidth != NS_UNCONSTRAINEDSIZE)) {
+ mOuterFrame->ListTag(stdout);
+ printf(": UpdateBand: bad caller: width WAS %d(0x%x)\n",
+ aWidth, aWidth);
+ aWidth = NS_UNCONSTRAINEDSIZE;
+ }
+ if ((aHeight > 100000) && (aHeight != NS_UNCONSTRAINEDSIZE)) {
+ mOuterFrame->ListTag(stdout);
+ printf(": UpdateBand: bad caller: height WAS %d(0x%x)\n",
+ aHeight, aHeight);
+ aHeight = NS_UNCONSTRAINEDSIZE;
+ }
+#endif
+
mLeftEdge = aX;
mX = aX;
if (NS_UNCONSTRAINEDSIZE == aWidth) {
@@ -400,7 +430,7 @@ nsInlineReflow::ComputeAvailableSize()
mFrameAvailSize.width = mOuterReflowState.maxSize.width;
return PR_TRUE;
}
-
+#if 0
// Give up now if there is no chance. Note that we allow a reflow if
// the available space is zero because that way things that end up
// zero sized won't trigger a new line to be created. We also allow
@@ -410,6 +440,7 @@ nsInlineReflow::ComputeAvailableSize()
((mFrameAvailSize.width < 0) || (mFrameAvailSize.height < 0))) {
return PR_FALSE;
}
+#endif
return PR_TRUE;
}
@@ -573,12 +604,9 @@ nsInlineReflow::CanPlaceFrame(nsHTMLReflowMetrics& aMetrics,
// location.
if ((0 == mFrameNum) ||
(0 == mLineLayout.GetPlacedFrames()) ||
- mOuterReflowState.mNoWrap) {
- return PR_TRUE;
- }
-
- // If this frame is part of a non-breaking-unit then it fits
- if (mInWord) {
+ mOuterReflowState.mNoWrap ||
+ mInWord ||
+ (0 == pfd->mMargin.left + pfd->mBounds.width + pfd->mMargin.right)) {
return PR_TRUE;
}