diff options
author | Bram Moolenaar <bram@vim.org> | 2012-01-20 17:57:51 +0100 |
---|---|---|
committer | Bram Moolenaar <bram@vim.org> | 2012-01-20 17:57:51 +0100 |
commit | a238b56109945d616f5969650c70f84e61c82ef5 (patch) | |
tree | b658ae8688d34ad1ff6fa6293533fc5fbf8b4867 | |
parent | a411fe97b21597bbb8735a865b938751893589bd (diff) | |
download | vim-a238b56109945d616f5969650c70f84e61c82ef5.tar.gz |
Problem: Multi-byte characters in b:browsefilter are not handled correctly.
Solution: First use convert_filter() normally and then convert to wide
characters. (Taro Muraoka)
-rw-r--r-- | src/gui_w48.c | 30 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 15 insertions, 17 deletions
diff --git a/src/gui_w48.c b/src/gui_w48.c index a6a8184a..80fad9e8 100644 --- a/src/gui_w48.c +++ b/src/gui_w48.c @@ -328,6 +328,10 @@ static LOGFONT norm_logfont; static LRESULT _OnImeNotify(HWND hWnd, DWORD dwCommand, DWORD dwData); #endif +#if defined(FEAT_MBYTE) && defined(WIN3264) +static char_u *convert_filter(char_u *s); +#endif + #ifdef DEBUG_PRINT_ERROR /* * Print out the last Windows error message @@ -3275,28 +3279,20 @@ mch_set_mouse_shape(int shape) # if defined(FEAT_MBYTE) && defined(WIN3264) /* - * Wide version of convert_filter(). Keep in sync! + * Wide version of convert_filter(). */ static WCHAR * convert_filterW(char_u *s) { - WCHAR *res; - unsigned s_len = (unsigned)STRLEN(s); - unsigned i; + char_u *tmp; + int len; - res = (WCHAR *)alloc((s_len + 3) * sizeof(WCHAR)); - if (res != NULL) - { - for (i = 0; i < s_len; ++i) - if (s[i] == '\t' || s[i] == '\n') - res[i] = '\0'; - else - res[i] = s[i]; - res[s_len] = NUL; - /* Add two extra NULs to make sure it's properly terminated. */ - res[s_len + 1] = NUL; - res[s_len + 2] = NUL; - } + tmp = convert_filter(s); + if (tmp == NULL) + return NULL; + len = (int)STRLEN(s) + 3; + res = enc_to_utf16(tmp, &len); + vim_free(tmp); return res; } diff --git a/src/version.c b/src/version.c index 73bb3abf..0b281a5d 100644 --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 406, +/**/ 405, /**/ 404, |