diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2006-06-30 09:41:34 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2006-06-30 09:41:34 +0000 |
commit | 4cd7b957f382c1d961641629a84ada8384953598 (patch) | |
tree | 953744b3c8ffd0e1da315b8bf10f044f1f6a0a7b /Src/math.c | |
parent | 92737d2c42f8df17ce910a2ca04fd09b84a5b6a3 (diff) | |
download | zsh-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.c | 16 |
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; } |