Program: 60222
Project: 60222
Buggy source:
public void changeValue(AbstractCSS2Properties properties,String newValue,CSSStyleDeclaration declaration,boolean important){
  properties.setPropertyValueLCAlt(FONT,newValue,important);
  if (newValue != null && newValue.length() > 0) {
    String fontSpecTL=newValue.toLowerCase();
    FontInfo fontInfo=(FontInfo)HtmlValues.SYSTEM_FONTS.get(fontSpecTL);
    if (fontInfo != null) {
      if (fontInfo.fontFamily != null) {
        properties.setPropertyValueLCAlt(FONT_FAMILY,fontInfo.fontFamily,important);
      }
      if (fontInfo.fontSize != null) {
        properties.setPropertyValueLCAlt(FONT_SIZE,fontInfo.fontSize,important);
      }
      if (fontInfo.fontStyle != null) {
        properties.setPropertyValueLCAlt(FONT_STYLE,fontInfo.fontStyle,important);
      }
      if (fontInfo.fontVariant != null) {
        properties.setPropertyValueLCAlt(FONT_VARIANT,fontInfo.fontVariant,important);
      }
      if (fontInfo.fontWeight != null) {
        properties.setPropertyValueLCAlt(FONT_WEIGHT,fontInfo.fontWeight,important);
      }
      return;
    }
    String[] tokens=HtmlValues.splitCssValue(fontSpecTL);
    String token=null;
    int length=tokens.length;
    int i;
    for (i=0; i < length; i++) {
      token=tokens[i];
      if (HtmlValues.isFontStyle(token)) {
        properties.setPropertyValueLCAlt(FONT_STYLE,token,important);
        continue;
      }
      if (HtmlValues.isFontVariant(token)) {
        properties.setPropertyValueLCAlt(FONT_VARIANT,token,important);
        continue;
      }
      if (HtmlValues.isFontWeight(token)) {
        properties.setPropertyValueLCAlt(FONT_WEIGHT,token,important);
        continue;
      }
      break;
    }
    if (token != null) {
      int slashIdx=token.indexOf('/');
      String fontSizeText=slashIdx == -1 ? token : token.substring(0,slashIdx);
      properties.setPropertyValueLCAlt(FONT_SIZE,fontSizeText,important);
      String lineHeightText=slashIdx == -1 ? null : token.substring(slashIdx + 1);
      if (lineHeightText != null) {
        properties.setPropertyValueLCAlt(LINE_HEIGHT,lineHeightText,important);
      }
      if (++i < length) {
        StringBuffer fontFamilyBuff=new StringBuffer();
        do {
          token=tokens[i];
          fontFamilyBuff.append(token);
          fontFamilyBuff.append(' ');
        }
 while (++i < length);
        properties.setPropertyValueLCAlt(FONT_FAMILY,fontFamilyBuff.toString(),important);
      }
    }
  }
}

Fixed version (ground truth):
public void changeValue(AbstractCSS2Properties properties,String newValue,CSSStyleDeclaration declaration,boolean important){
  properties.setPropertyValueLCAlt(FONT,newValue,important);
  if (newValue != null && newValue.length() > 0) {
    String fontSpecTL=newValue.toLowerCase();
    FontInfo fontInfo=(FontInfo)HtmlValues.SYSTEM_FONTS.get(fontSpecTL);
    if (fontInfo != null) {
      if (fontInfo.getFontFamily() != null) {
        properties.setPropertyValueLCAlt(FONT_FAMILY,fontInfo.getFontFamily(),important);
      }
      if (fontInfo.getFontSize() != null) {
        properties.setPropertyValueLCAlt(FONT_SIZE,fontInfo.getFontSize(),important);
      }
      if (fontInfo.getFontStyle() != null) {
        properties.setPropertyValueLCAlt(FONT_STYLE,fontInfo.getFontStyle(),important);
      }
      if (fontInfo.getFontVariant() != null) {
        properties.setPropertyValueLCAlt(FONT_VARIANT,fontInfo.getFontVariant(),important);
      }
      if (fontInfo.getFontWeight() != null) {
        properties.setPropertyValueLCAlt(FONT_WEIGHT,fontInfo.getFontWeight(),important);
      }
      return;
    }
    String[] tokens=HtmlValues.splitCssValue(fontSpecTL);
    String token=null;
    int length=tokens.length;
    int i;
    for (i=0; i < length; i++) {
      token=tokens[i];
      if (HtmlValues.isFontStyle(token)) {
        properties.setPropertyValueLCAlt(FONT_STYLE,token,important);
        continue;
      }
      if (HtmlValues.isFontVariant(token)) {
        properties.setPropertyValueLCAlt(FONT_VARIANT,token,important);
        continue;
      }
      if (HtmlValues.isFontWeight(token)) {
        properties.setPropertyValueLCAlt(FONT_WEIGHT,token,important);
        continue;
      }
      break;
    }
    if (token != null) {
      int slashIdx=token.indexOf('/');
      String fontSizeText=slashIdx == -1 ? token : token.substring(0,slashIdx);
      properties.setPropertyValueLCAlt(FONT_SIZE,fontSizeText,important);
      String lineHeightText=slashIdx == -1 ? null : token.substring(slashIdx + 1);
      if (lineHeightText != null) {
        properties.setPropertyValueLCAlt(LINE_HEIGHT,lineHeightText,important);
      }
      if (++i < length) {
        StringBuffer fontFamilyBuff=new StringBuffer();
        do {
          token=tokens[i];
          fontFamilyBuff.append(token);
          fontFamilyBuff.append(' ');
        }
 while (++i < length);
        properties.setPropertyValueLCAlt(FONT_FAMILY,fontFamilyBuff.toString(),important);
      }
    }
  }
}