+--- regexec.c.orig 2004-11-25 11:38:33.000000000 -0800
++++ regexec.c 2005-02-24 14:20:50.000000000 -0800
+@@ -43,6 +43,8 @@
+ #include <sys/cdefs.h>
+ __FBSDID("$FreeBSD: src/lib/libc/regex/regexec.c,v 1.6 2004/07/12 07:35:59 tjr Exp $");
+
++#include "xlocale_private.h"
++
+ /*
+ * the outer shell of regexec()
+ *
+@@ -66,17 +68,18 @@
+ static int nope __unused = 0; /* for use in asserts; shuts lint up */
+
+ static __inline size_t
+-xmbrtowc(wi, s, n, mbs, dummy)
++xmbrtowc(wi, s, n, mbs, dummy, loc)
+ wint_t *wi;
+ const char *s;
+ size_t n;
+ mbstate_t *mbs;
+ wint_t dummy;
++locale_t loc;
+ {
+ size_t nr;
+ wchar_t wc;
+
+- nr = mbrtowc(&wc, s, n, mbs);
++ nr = mbrtowc_l(&wc, s, n, mbs, loc);
+ if (wi != NULL)
+ *wi = wc;
+ if (nr == 0)
+@@ -91,12 +94,13 @@
+ }
+
+ static __inline size_t
+-xmbrtowc_dummy(wi, s, n, mbs, dummy)
++xmbrtowc_dummy(wi, s, n, mbs, dummy, loc)
+ wint_t *wi;
+ const char *s;
+ size_t n __unused;
+ mbstate_t *mbs __unused;
+ wint_t dummy __unused;
++locale_t loc;
+ {
+
+ if (wi != NULL)
+@@ -186,6 +190,8 @@