Loading...
--- /dev/null
+++ Libc/Libc-763.12/gen/FreeBSD/unvis.c.patch
@@ -0,0 +1,41 @@
+--- unvis.c.orig 2009-11-07 14:51:38.000000000 -0800
++++ unvis.c 2009-11-07 14:51:40.000000000 -0800
+@@ -33,6 +33,8 @@ static char sccsid[] = "@(#)unvis.c 8.1
+ #include <sys/cdefs.h>
+ __FBSDID("$FreeBSD: src/lib/libc/gen/unvis.c,v 1.10 2007/01/09 00:27:56 imp Exp $");
+
++#include "xlocale_private.h"
++
+ #include <sys/types.h>
+ #include <ctype.h>
+ #include <vis.h>
+@@ -60,6 +62,7 @@ __FBSDID("$FreeBSD: src/lib/libc/gen/unv
+ int
+ unvis(char *cp, int c, int *astate, int flag)
+ {
++ locale_t loc = __current_locale();
+
+ if (flag & UNVIS_END) {
+ if (*astate == S_OCTAL2 || *astate == S_OCTAL3) {
+@@ -86,8 +89,8 @@ unvis(char *cp, int c, int *astate, int
+
+ case S_START:
+ if (*astate & S_HTTP) {
+- if (ishex(tolower(c))) {
+- *cp = isdigit(c) ? (c - '0') : (tolower(c) - 'a');
++ if (ishex(tolower_l(c, loc))) {
++ *cp = isdigit_l(c, loc) ? (c - '0') : (tolower_l(c, loc) - 'a');
+ *astate = S_HEX2;
+ return (0);
+ }
+@@ -212,8 +215,8 @@ unvis(char *cp, int c, int *astate, int
+ return (UNVIS_VALIDPUSH);
+
+ case S_HEX2: /* second mandatory hex digit */
+- if (ishex(tolower(c))) {
+- *cp = (isdigit(c) ? (*cp << 4) + (c - '0') : (*cp << 4) + (tolower(c) - 'a' + 10));
++ if (ishex(tolower_l(c, loc))) {
++ *cp = (isdigit_l(c, loc) ? (*cp << 4) + (c - '0') : (*cp << 4) + (tolower_l(c, loc) - 'a' + 10));
+ }
+ *astate = S_GROUND;
+ return (UNVIS_VALID);