if (NS_UNCONSTRAINEDSIZE != aReflowState.availSize.height) { aReflowState.availSize.height -= aKidDesiredSize.height;
if (PR_FALSE == aReflowState.unconstrainedHeight) { aReflowState.availSize.height -= aDesiredSize.height;
void nsTableFrame::PlaceChild(nsIPresContext*      aPresContext,                              nsTableReflowState&  aReflowState,                              nsIFrame*            aKidFrame,                              nsHTMLReflowMetrics& aKidDesiredSize){    // Place and size the child  FinishReflowChild(aKidFrame, aPresContext, nsnull, aKidDesiredSize,                    aReflowState.x, aReflowState.y, 0);  // Adjust the running y-offset  aReflowState.y += aKidDesiredSize.height;  // If our height is constrained, then update the available height  if (NS_UNCONSTRAINEDSIZE != aReflowState.availSize.height) {    aReflowState.availSize.height -= aKidDesiredSize.height;  }  const nsStyleDisplay* childDisplay = aKidFrame->GetStyleDisplay();  // We only allow a single footer frame, and the footer frame must occur before  // any body section row groups  if ((NS_STYLE_DISPLAY_TABLE_FOOTER_GROUP == childDisplay->mDisplay) &&      !aReflowState.footerFrame && !aReflowState.firstBodySection) {    aReflowState.footerFrame = aKidFrame;  }  else if (aReflowState.footerFrame) {    // put the non footer where the footer was    nsPoint origin = aReflowState.footerFrame->GetPosition();    aKidFrame->SetPosition(origin);    // put the footer below the non footer    origin.y = aReflowState.y - aReflowState.footerFrame->GetSize().height;    aReflowState.footerFrame->SetPosition(origin);  }}