Smart quotes cleanup bug

Module pprint.c, line 409:

if (c > 126 && c < 160)
{
    if (c == 8211)
        c = '-';  /* en dash */
    else if (c == 8212)
        c = '-';  /* em dash */
    else if (c == 8216)
        c = '\'';  /* single left quotation mark */
    else if (c == 8217)
        c = '\'';  /* single right quotation mark */
    else if (c == 8220)
        c = '"';  /* double left quotation mark */
    else if (c == 8221)
        c = '"';  /* double right quotation mark */
}

Obviously, due to enclosing if(), the cleanup code does not work. It must
be:

if (c >= 0x2013 && c <= 0x201E)
{
    switch (c) {
      case 0x2013:
      case 0x2014:
        c = '-';
        break;
      case 0x2018:
      case 0x2019:
      case 0x201A:
        c = '\'';
        break;
      case 0x201C:
      case 0x201D:
      case 0x201E:
        c = '"';
        break;
      }
}

(I also had added two more codes for &bdquo; and &sbquo; cleanup).

Received on Tuesday, 22 February 2000 03:25:17 UTC