Program: 70426
Project: 70426
Buggy source:
protected void createRoot(){
  int overFlowType=context.getPageOverflow();
  if (overFlowType == IPDFRenderOption.OUTPUT_TO_MULTIPLE_PAGES) {
  }
  pageContentWidth=getDimensionValue(pageContent,pageContent.getPageWidth());
  pageContentHeight=getDimensionValue(pageContent,pageContent.getPageHeight());
  if (pageContentWidth <= 0) {
    pageContentWidth=DEFAULT_PAGE_WIDTH;
  }
  if (pageContentHeight <= 0) {
    pageContentHeight=DEFAULT_PAGE_HEIGHT;
  }
  setWidth(pageContentWidth);
  setHeight(pageContentHeight);
  ContainerArea pageRoot=new BlockContainerArea();
  rootLeft=getDimensionValue(pageContent,pageContent.getMarginLeft(),pageContentWidth);
  rootTop=getDimensionValue(pageContent,pageContent.getMarginTop(),pageContentWidth);
  rootLeft=Math.max(0,rootLeft);
  rootLeft=Math.min(pageContentWidth,rootLeft);
  rootTop=Math.max(0,rootTop);
  rootTop=Math.min(pageContentHeight,rootTop);
  pageRoot.setPosition(rootLeft,rootTop);
  int rootRight=getDimensionValue(pageContent,pageContent.getMarginRight(),pageContentWidth);
  int rootBottom=getDimensionValue(pageContent,pageContent.getMarginBottom(),pageContentWidth);
  rootRight=Math.max(0,rootRight);
  rootBottom=Math.max(0,rootBottom);
  if (rootLeft + rootRight > pageContentWidth) {
    rootRight=0;
  }
  if (rootTop + rootBottom > pageContentHeight) {
    rootBottom=0;
  }
  rootWidth=pageContentWidth - rootLeft - rootRight;
  rootHeight=pageContentHeight - rootTop - rootBottom;
  pageRoot.setWidth(rootWidth);
  pageRoot.setHeight(rootHeight);
  setRoot(pageRoot);
  pageRoot.setParent(this);
  int headerHeight=getDimensionValue(pageContent,pageContent.getHeaderHeight(),pageRoot.getHeight());
  int headerWidth=pageRoot.getWidth();
  headerHeight=Math.max(0,headerHeight);
  headerHeight=Math.min(pageRoot.getHeight(),headerHeight);
  ContainerArea header=new BlockContainerArea();
  header.setHeight(headerHeight);
  header.setWidth(headerWidth);
  header.context=context;
  header.needClip=true;
  header.setPosition(0,0);
  pageRoot.addChild(header);
  setHeader(header);
  header.setParent(pageRoot);
  int footerHeight=getDimensionValue(pageContent,pageContent.getFooterHeight(),pageRoot.getHeight());
  int footerWidth=pageRoot.getWidth();
  footerHeight=Math.max(0,footerHeight);
  footerHeight=Math.min(pageRoot.getHeight() - headerHeight,footerHeight);
  ContainerArea footer=new BlockContainerArea();
  footer.setHeight(footerHeight);
  footer.setWidth(footerWidth);
  footer.context=context;
  footer.needClip=true;
  footer.setPosition(0,pageRoot.getHeight() - footerHeight);
  pageRoot.addChild(footer);
  setFooter(footer);
  footer.setParent(pageRoot);
  ContainerArea body=new BlockContainerArea();
  int bodyLeft=getDimensionValue(pageContent,pageContent.getLeftWidth(),pageRoot.getWidth());
  bodyLeft=Math.max(0,bodyLeft);
  bodyLeft=Math.min(pageRoot.getWidth(),bodyLeft);
  body.setPosition(bodyLeft,headerHeight);
  int bodyRight=getDimensionValue(pageContent,pageContent.getRightWidth(),pageRoot.getWidth());
  bodyRight=Math.max(0,bodyRight);
  bodyRight=Math.min(pageRoot.getWidth() - bodyLeft,bodyRight);
  body.setWidth(pageRoot.getWidth() - bodyLeft - bodyRight);
  body.setHeight(pageRoot.getHeight() - headerHeight - footerHeight);
  setBody(body);
  if (overFlowType == IPDFRenderOption.CLIP_CONTENT || overFlowType == IPDFRenderOption.OUTPUT_TO_MULTIPLE_PAGES) {
    pageRoot.setNeedClip(true);
    body.setNeedClip(true);
  }
 else {
    pageRoot.setNeedClip(false);
  }
}

Fixed version (ground truth):
protected void createRoot(){
  int overFlowType=context.getPageOverflow();
  if (overFlowType == IPDFRenderOption.OUTPUT_TO_MULTIPLE_PAGES) {
  }
  pageContentWidth=getDimensionValue(pageContent,pageContent.getPageWidth());
  pageContentHeight=getDimensionValue(pageContent,pageContent.getPageHeight());
  if (pageContentWidth <= 0) {
    pageContentWidth=DEFAULT_PAGE_WIDTH;
  }
  if (pageContentHeight <= 0) {
    pageContentHeight=DEFAULT_PAGE_HEIGHT;
  }
  setWidth(pageContentWidth);
  setHeight(pageContentHeight);
  ContainerArea pageRoot=new BlockContainerArea();
  rootLeft=getDimensionValue(pageContent,pageContent.getMarginLeft(),pageContentWidth);
  rootTop=getDimensionValue(pageContent,pageContent.getMarginTop(),pageContentWidth);
  rootLeft=Math.max(0,rootLeft);
  rootLeft=Math.min(pageContentWidth,rootLeft);
  rootTop=Math.max(0,rootTop);
  rootTop=Math.min(pageContentHeight,rootTop);
  pageRoot.setPosition(rootLeft,rootTop);
  int rootRight=getDimensionValue(pageContent,pageContent.getMarginRight(),pageContentWidth);
  int rootBottom=getDimensionValue(pageContent,pageContent.getMarginBottom(),pageContentWidth);
  rootRight=Math.max(0,rootRight);
  rootBottom=Math.max(0,rootBottom);
  if (rootLeft + rootRight > pageContentWidth) {
    rootRight=0;
  }
  if (rootTop + rootBottom > pageContentHeight) {
    rootBottom=0;
  }
  rootWidth=pageContentWidth - rootLeft - rootRight;
  rootHeight=pageContentHeight - rootTop - rootBottom;
  pageRoot.setWidth(rootWidth);
  pageRoot.setHeight(rootHeight);
  setRoot(pageRoot);
  pageRoot.setParent(this);
  int headerHeight=getDimensionValue(pageContent,pageContent.getHeaderHeight(),pageRoot.getHeight());
  int headerWidth=pageRoot.getWidth();
  headerHeight=Math.max(0,headerHeight);
  headerHeight=Math.min(pageRoot.getHeight(),headerHeight);
  RegionArea header=new RegionArea();
  header.setHeight(headerHeight);
  header.setWidth(headerWidth);
  header.context=context;
  header.needClip=true;
  header.setPosition(0,0);
  pageRoot.addChild(header);
  setHeader(header);
  header.setParent(pageRoot);
  int footerHeight=getDimensionValue(pageContent,pageContent.getFooterHeight(),pageRoot.getHeight());
  int footerWidth=pageRoot.getWidth();
  footerHeight=Math.max(0,footerHeight);
  footerHeight=Math.min(pageRoot.getHeight() - headerHeight,footerHeight);
  RegionArea footer=new RegionArea();
  footer.setHeight(footerHeight);
  footer.setWidth(footerWidth);
  footer.context=context;
  footer.needClip=true;
  footer.setPosition(0,pageRoot.getHeight() - footerHeight);
  pageRoot.addChild(footer);
  setFooter(footer);
  footer.setParent(pageRoot);
  ContainerArea body=new BlockContainerArea();
  int bodyLeft=getDimensionValue(pageContent,pageContent.getLeftWidth(),pageRoot.getWidth());
  bodyLeft=Math.max(0,bodyLeft);
  bodyLeft=Math.min(pageRoot.getWidth(),bodyLeft);
  body.setPosition(bodyLeft,headerHeight);
  int bodyRight=getDimensionValue(pageContent,pageContent.getRightWidth(),pageRoot.getWidth());
  bodyRight=Math.max(0,bodyRight);
  bodyRight=Math.min(pageRoot.getWidth() - bodyLeft,bodyRight);
  body.setWidth(pageRoot.getWidth() - bodyLeft - bodyRight);
  body.setHeight(pageRoot.getHeight() - headerHeight - footerHeight);
  setBody(body);
  if (overFlowType == IPDFRenderOption.CLIP_CONTENT || overFlowType == IPDFRenderOption.OUTPUT_TO_MULTIPLE_PAGES) {
    pageRoot.setNeedClip(true);
    body.setNeedClip(true);
  }
 else {
    pageRoot.setNeedClip(false);
  }
}