From 33c9432d56cbb454ecd48335af22053aca2416bc Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Tue, 20 Sep 2005 15:19:06 +0000 Subject: 21737: unmetafy wordchars before looking for multibyte characters --- Src/utils.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'Src/utils.c') diff --git a/Src/utils.c b/Src/utils.c index dce10beee..561624f51 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -2499,15 +2499,18 @@ inittyptab(void) } #ifdef ZLE_UNICODE_SUPPORT if (wordchars) { - const char *wordchars_ptr = wordchars; + char *wordchars_unmeta; + const char *wordchars_ptr; mbstate_t mbs; - int nchars; + int nchars, unmetalen; + + wordchars_unmeta = dupstring(wordchars); + wordchars_ptr = unmetafy(wordchars_unmeta, &unmetalen); memset(&mbs, 0, sizeof(mbs)); wordchars_wide = (wchar_t *) - zrealloc(wordchars_wide, (strlen(wordchars)+1)*sizeof(wchar_t)); - nchars = mbsrtowcs(wordchars_wide, &wordchars_ptr, strlen(wordchars), - &mbs); + zrealloc(wordchars_wide, (unmetalen+1)*sizeof(wchar_t)); + nchars = mbsrtowcs(wordchars_wide, &wordchars_ptr, unmetalen, &mbs); if (nchars == -1) { /* Conversion state is undefined: better just set to null */ *wordchars_wide = L'\0'; -- cgit 1.4.1