I decided to fix utf8.c in a slightly different (but equivalent) way, and also fixed the body->location cleanup problem too. See attached diffs.
-- Mark --
http://staff.washington.edu/mrc Science does not emerge from voting, party politics, or public debate. Si vis pacem, para bellum.
*** mail.c 2004/04/08 23:05:05 1.52 --- mail.c 2004/04/18 16:16:03 *************** *** 10,16 **** * Internet: [EMAIL PROTECTED] * * Date: 22 November 1989 ! * Last Edited: 8 April 2004 * * The IMAP toolkit provided in this Distribution is * Copyright 1988-2004 University of Washington. --- 10,16 ---- * Internet: [EMAIL PROTECTED] * * Date: 22 November 1989 ! * Last Edited: 18 April 2004 * * The IMAP toolkit provided in this Distribution is * Copyright 1988-2004 University of Washington. *************** *** 5504,5509 **** --- 5504,5510 ---- if (body->disposition.parameter) mail_free_body_parameter (&body->disposition.parameter); if (body->language) mail_free_stringlist (&body->language); + if (body->location) fs_give ((void **) &body->location); if (body->mime.text.data) fs_give ((void **) &body->mime.text.data); if (body->contents.text.data) fs_give ((void **) &body->contents.text.data); if (body->md5) fs_give ((void **) &body->md5);
*** utf8.c 2004/03/16 23:56:02 1.14 --- utf8.c 2004/04/18 16:16:08 *************** *** 10,16 **** * Internet: [EMAIL PROTECTED] * * Date: 11 June 1997 ! * Last Edited: 15 March 2004 * * The IMAP toolkit provided in this Distribution is * Copyright 1988-2004 University of Washington. --- 10,16 ---- * Internet: [EMAIL PROTECTED] * * Date: 11 June 1997 ! * Last Edited: 18 April 2004 * * The IMAP toolkit provided in this Distribution is * Copyright 1988-2004 University of Washington. *************** *** 376,382 **** break; case CT_1BYTE: /* 1 byte ASCII + table 0x80-0xff */ for (tab = (unsigned short *) cs->tab,i = 128; i < 256; i++) ! if (tab[i] != UBOGON) rmap[tab[i]] = (unsigned short) i; break; case CT_1BYTE8: /* 1 byte table 0x00 - 0xff */ for (tab = (unsigned short *) cs->tab,i = 0; i < 256; i++) --- 376,383 ---- break; case CT_1BYTE: /* 1 byte ASCII + table 0x80-0xff */ for (tab = (unsigned short *) cs->tab,i = 128; i < 256; i++) ! if (tab[i & BITS7] != UBOGON) rmap[tab[i & BITS7]] = ! (unsigned short) i; break; case CT_1BYTE8: /* 1 byte table 0x00 - 0xff */ for (tab = (unsigned short *) cs->tab,i = 0; i < 256; i++)