if (0 == mLineLayout->GetPlacedFrames()) {
if (IsLeftMostChild(aPlaceholder)) {
nsBlockReflowState::AddFloater(nsPlaceholderFrame* aPlaceholder,                               PRBool aInitialReflow){  // Update the current line's floater array  NS_ASSERTION(nsnull != mCurrentLine, "null ptr");  if (nsnull == mCurrentLine->mFloaters) {    mCurrentLine->mFloaters = new nsVoidArray();  }  mCurrentLine->mFloaters->AppendElement(aPlaceholder);  // Reflow the floater  nsIFrame* floater = aPlaceholder->GetAnchoredItem();  nsSize kidAvailSize(0, 0);  nsHTMLReflowState reflowState(mPresContext, floater, *this, kidAvailSize);  reflowState.lineLayout = nsnull;  if ((nsnull == reflowCommand) || (floater != mNextRCFrame)) {    // Stub out reflowCommand and repair reason in the reflowState    // when incremental reflow doesn't apply to the floater.    reflowState.reflowCommand = nsnull;    reflowState.reason = ((reason == eReflowReason_Initial) || aInitialReflow)      ? eReflowReason_Initial      : eReflowReason_Resize;  }  mBlock->ReflowFloater(mPresContext, *this, floater, reflowState);  // Now place the floater immediately if possible. Otherwise stash it  // away in mPendingFloaters and place it later.  if (0 == mLineLayout->GetPlacedFrames()) {    NS_FRAME_LOG(NS_FRAME_TRACE_CHILD_REFLOW,       ("nsBlockReflowState::AddFloater: IsLeftMostChild, placeHolder=%p",        aPlaceholder));    // Flush out pending bottom margin before placing floater    if (0 != mPrevBottomMargin) {      mY += mPrevBottomMargin;      mPrevBottomMargin = 0;    }    // Because we are in the middle of reflowing a placeholder frame    // within a line (and possibly nested in an inline frame or two    // that's a child of our block) we need to restore the space    // manager's translation to the space that the block resides in    // before placing the floater.    PRBool isLeftFloater;    nscoord ox, oy;    mSpaceManager->GetTranslation(ox, oy);    nscoord dx = ox - mSpaceManagerX;    nscoord dy = oy - mSpaceManagerY;    mSpaceManager->Translate(-dx, -dy);    PlaceFloater(aPlaceholder, isLeftFloater);    // Pass on updated available space to the current inline reflow engine    GetAvailableSpace();    mLineLayout->UpdateInlines(mAvailSpaceRect.x + mBorderPadding.left,                               mY,                               mAvailSpaceRect.width,                               mAvailSpaceRect.height,                               isLeftFloater);    // Restore coordinate system    mSpaceManager->Translate(dx, dy);  }  else {    // This floater will be placed after the line is done (it is a    // below current line floater).    NS_FRAME_LOG(NS_FRAME_TRACE_CHILD_REFLOW,       ("nsBlockReflowState::AddFloater: pending, placeHolder=%p",        aPlaceholder));    mPendingFloaters.AppendElement(aPlaceholder);  }}