diff -urN mp-3.3.9.orig/gnu_regex.c mp-3.3.9/gnu_regex.c --- mp-3.3.9.orig/gnu_regex.c 2004-12-21 11:51:05.000000000 -0500 +++ mp-3.3.9/gnu_regex.c 2004-12-21 12:06:50.974403033 -0500 @@ -1635,10 +1635,12 @@ if (syntax & RE_NO_BK_PARENS) goto normal_backslash; if (COMPILE_STACK_EMPTY) + { if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD) goto normal_backslash; else return REG_ERPAREN; + } handle_close: if (fixup_alt_jump) @@ -1655,10 +1657,12 @@ /* See similar code for backslashed left paren above. */ if (COMPILE_STACK_EMPTY) + { if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD) goto normal_char; else return REG_ERPAREN; + } /* Since we just checked for an empty stack above, this ``can't happen''. */ @@ -3843,7 +3847,7 @@ /* Compare that many; failure if mismatch, else move past them. */ if (translate - ? bcmp_translate (d, d2, mcnt, translate) + ? bcmp_translate ((unsigned char *)d, (unsigned char *)d2, mcnt, translate) : bcmp (d, d2, mcnt)) goto fail; d += mcnt, d2 += mcnt;