about summary refs log tree commit diff
path: root/Src/math.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2006-06-30 09:41:34 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2006-06-30 09:41:34 +0000
commit4cd7b957f382c1d961641629a84ada8384953598 (patch)
tree953744b3c8ffd0e1da315b8bf10f044f1f6a0a7b /Src/math.c
parent92737d2c42f8df17ce910a2ca04fd09b84a5b6a3 (diff)
downloadzsh-4cd7b957f382c1d961641629a84ada8384953598.tar.gz
zsh-4cd7b957f382c1d961641629a84ada8384953598.tar.xz
zsh-4cd7b957f382c1d961641629a84ada8384953598.zip
22529: multibyte conversion in math expressions
Diffstat (limited to 'Src/math.c')
-rw-r--r--Src/math.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/Src/math.c b/Src/math.c
index 336416597..bd48288ec 100644
--- a/Src/math.c
+++ b/Src/math.c
@@ -549,8 +549,20 @@ getcvar(char *s)
     queue_signals();
     if (!(t = getsparam(s)))
 	mn.u.l = 0;
-    else
-        mn.u.l = STOUC(*t == Meta ? t[1] ^ 32 : *t);
+    else {
+#ifdef MULTIBYTE_SUPPORT
+	if (isset(MULTIBYTE)) {
+	    wint_t wc;
+	    (void)mb_metacharlenconv(t, &wc);
+	    if (wc != WEOF) {
+		mn.u.l = (zlong)wc;
+		unqueue_signals();
+		return mn;
+	    }
+	}
+#endif
+	mn.u.l = STOUC(*t == Meta ? t[1] ^ 32 : *t);
+    }
     unqueue_signals();
     return mn;
 }