Program: 86732
Project: 86732
Buggy source:
/** 
 * This method handles all other text.
 */
@Override public void handleText(char[] data,int pos){
  String str=new String(data);
  if (inPreMarkdown) {
    String html="String_Node_Str";
    if (str.startsWith("String_Node_Str")) {
      str=removeLeadingSpaces(str);
    }
    html=Processor.process(str);
    String toAppend=HTMLtoLaTeXBackEnd.fixText(html);
    ret.append(toAppend);
    return;
  }
  for (int i=0; i < str.length(); ++i) {
    int c=str.charAt(i);
    if (notex) {
      continue;
    }
switch (c) {
case 160:
      ret.append("String_Node_Str");
    break;
case ' ':
  if (verbat > 0) {
    ret.append("String_Node_Str");
  }
 else {
    ret.append(' ');
  }
break;
case '[':
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
break;
case ']':
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
break;
case '_':
case '%':
case '$':
case '#':
case '}':
case '{':
case '&':
ret.append('\\');
ret.append((char)c);
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
break;
case '�':
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
break;
case '�':
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
break;
case '�':
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
break;
case '�':
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
break;
case '�':
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
break;
case '�':
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
break;
case '^':
ret.append("String_Node_Str");
break;
case '<':
ret.append("String_Node_Str");
break;
case '\r':
case '\n':
if (tblstk.size() > 0) {
if (verbat > 0) {
ret.append("String_Node_Str" + TeXDoclet.TRUETYPE + "String_Node_Str");
}
 else {
ret.append("String_Node_Str");
}
}
 else {
if (verbat > 0) {
ret.append("String_Node_Str" + TeXDoclet.TRUETYPE + "String_Node_Str");
}
 else if ((i + 1) < str.length() && str.charAt(i + 1) == 10) {
ret.append("String_Node_Str");
++i;
}
 else {
ret.append((char)c);
}
}
break;
case '/':
ret.append("String_Node_Str");
break;
case '>':
ret.append("String_Node_Str");
break;
case '\\':
ret.append("String_Node_Str");
break;
default :
ret.append((char)c);
break;
}
}
}

Fixed version (ground truth):
/** 
 * This method handles all other text.
 */
@Override public void handleText(char[] data,int pos){
  String str=new String(data);
  if (inPreMarkdown) {
    String html="String_Node_Str";
    if (str.startsWith("String_Node_Str")) {
      str=removeLeadingSpaces(str);
    }
    html=Processor.process(str);
    String toAppend=HTMLtoLaTeXBackEnd.fixText(html);
    ret.append(toAppend);
    return;
  }
  for (int i=0; i < str.length(); ++i) {
    int c=str.charAt(i);
    if (notex) {
      continue;
    }
switch (c) {
case 160:
      ret.append("String_Node_Str");
    break;
case ' ':
  if (verbat > 0) {
    ret.append("String_Node_Str");
  }
 else {
    ret.append(' ');
  }
break;
case '[':
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
break;
case ']':
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
break;
case '_':
case '%':
case '$':
case '#':
case '}':
case '{':
case '&':
ret.append('\\');
ret.append((char)c);
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
break;
case 0xc3a6:
if (Charset.defaultCharset().name().equals("String_Node_Str")) {
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
}
 else {
ret.append((char)c);
}
break;
case 0xc386:
if (Charset.defaultCharset().name().equals("String_Node_Str")) {
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
}
 else {
ret.append((char)c);
}
break;
case 0xc3a5:
if (Charset.defaultCharset().name().equals("String_Node_Str")) {
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
}
 else {
ret.append((char)c);
}
break;
case 0xc385:
if (Charset.defaultCharset().name().equals("String_Node_Str")) {
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
}
 else {
ret.append((char)c);
}
break;
case 0xc3b8:
if (Charset.defaultCharset().name().equals("String_Node_Str")) {
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
}
 else {
ret.append((char)c);
}
break;
case 0xc398:
if (Charset.defaultCharset().name().equals("String_Node_Str")) {
if (i < str.length() - 1 && str.charAt(i + 1) == ' ') {
ret.append("String_Node_Str");
i++;
}
 else {
ret.append("String_Node_Str");
}
}
 else {
ret.append((char)c);
}
break;
case '^':
ret.append("String_Node_Str");
break;
case '<':
ret.append("String_Node_Str");
break;
case '\r':
case '\n':
if (tblstk.size() > 0) {
if (verbat > 0) {
ret.append("String_Node_Str" + TeXDoclet.TRUETYPE + "String_Node_Str");
}
 else {
ret.append("String_Node_Str");
}
}
 else {
if (verbat > 0) {
ret.append("String_Node_Str" + TeXDoclet.TRUETYPE + "String_Node_Str");
}
 else if ((i + 1) < str.length() && str.charAt(i + 1) == 10) {
ret.append("String_Node_Str");
++i;
}
 else {
ret.append((char)c);
}
}
break;
case '/':
ret.append("String_Node_Str");
break;
case '>':
ret.append("String_Node_Str");
break;
case '\\':
ret.append("String_Node_Str");
break;
default :
ret.append((char)c);
break;
}
}
}