if (mInitialFramesFreed < NS_LINELAYOUT_NUM_FRAMES) {  pfd = &mFrameDataBuf[mInitialFramesFreed++];
void *mem; PL_ARENA_ALLOCATE(mem, &mArena, sizeof(PerFrameData)); if (nsnull == mem) { return NS_ERROR_OUT_OF_MEMORY;
nsLineLayout::NewPerFrameData(PerFrameData** aResult){  PerFrameData* pfd = mFrameFreeList;  if (nsnull == pfd) {    if (mInitialFramesFreed < NS_LINELAYOUT_NUM_FRAMES) {      // use one of the ones defined in our struct...      pfd = &mFrameDataBuf[mInitialFramesFreed++];    }    else {      pfd = new PerFrameData;      if (nsnull == pfd) {        return NS_ERROR_OUT_OF_MEMORY;      }    }  }  else {    mFrameFreeList = pfd->mNext;  }  pfd->mSpan = nsnull;  pfd->mNext = nsnull;  pfd->mPrev = nsnull;  pfd->mFrame = nsnull;  pfd->mFlags = 0;  // all flags default to false#ifdef DEBUG  pfd->mVerticalAlign = 0xFF;  mFramesAllocated++;#endif  *aResult = pfd;  return NS_OK;}