diff options
-rw-r--r-- | src/charset.c | 5 | ||||
-rw-r--r-- | src/macros.h | 6 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 10 insertions, 3 deletions
diff --git a/src/charset.c b/src/charset.c index 8f058bde0..5a2952cd6 100644 --- a/src/charset.c +++ b/src/charset.c @@ -207,7 +207,10 @@ buf_init_chartab(buf, global) } while (c <= c2) { - if (!do_isalpha || isalpha(c) + /* Use the MB_ functions here, because isalpha() doesn't + * work properly when 'encoding' is "latin1" and the locale is + * "C". */ + if (!do_isalpha || MB_ISLOWER(c) || MB_ISUPPER(c) #ifdef FEAT_FKMAP || (p_altkeymap && (F_isalpha(c) || F_isdigit(c))) #endif diff --git a/src/macros.h b/src/macros.h index 400f77128..f22309959 100644 --- a/src/macros.h +++ b/src/macros.h @@ -54,10 +54,12 @@ /* * toupper() and tolower() that use the current locale. - * On some systems toupper()/tolower() only work on lower/uppercase characters + * On some systems toupper()/tolower() only work on lower/uppercase + * characters, first use islower() or isupper() then. * Careful: Only call TOUPPER_LOC() and TOLOWER_LOC() with a character in the * range 0 - 255. toupper()/tolower() on some systems can't handle others. - * Note: for UTF-8 use utf_toupper() and utf_tolower(). + * Note: It is often better to use MB_TOLOWER() and MB_TOUPPER(), because many + * toupper() and tolower() implementations only work for ASCII. */ #ifdef MSWIN # define TOUPPER_LOC(c) toupper_tab[(c) & 255] diff --git a/src/version.c b/src/version.c index 5f8faf875..11d944352 100644 --- a/src/version.c +++ b/src/version.c @@ -667,6 +667,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 79, +/**/ 78, /**/ 77, |