changeset 15002:9ae60773dd03 v8.1.0512

patch 8.1.0512: 'helplang' default is inconsistent for C and C.UTF-8 commit https://github.com/vim/vim/commit/389ab7122bec99c11ad4ce6d87cc6f38a21e4e40 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Nov 5 20:25:52 2018 +0100 patch 8.1.0512: 'helplang' default is inconsistent for C and C.UTF-8 Problem: 'helplang' default is inconsistent for C and C.UTF-8. Solution: Don't accept a value unless it starts with two letters.
author Bram Moolenaar <Bram@vim.org>
date Mon, 05 Nov 2018 20:30:08 +0100
parents 9401618259e9
children bd0d66403ac4
files src/ex_cmds2.c src/version.c
diffstat 2 files changed, 15 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -5359,6 +5359,16 @@ gettext_lang(char_u *name)
 
 #if defined(FEAT_MULTI_LANG) || defined(PROTO)
 /*
+ * Return TRUE when "lang" starts with a valid language name.
+ * Rejects NULL, empty string, "C", "C.UTF-8" and others.
+ */
+    static int
+is_valid_mess_lang(char_u *lang)
+{
+    return lang != NULL && ASCII_ISALPHA(lang[0]) && ASCII_ISALPHA(lang[1]);
+}
+
+/*
  * Obtain the current messages language.  Used to set the default for
  * 'helplang'.  May return NULL or an empty string.
  */
@@ -5379,17 +5389,17 @@ get_mess_lang(void)
 #  endif
 # else
     p = mch_getenv((char_u *)"LC_ALL");
-    if (p == NULL || *p == NUL)
+    if (!is_valid_mess_lang(p))
     {
 	p = mch_getenv((char_u *)"LC_MESSAGES");
-	if (p == NULL || *p == NUL)
+	if (!is_valid_mess_lang(p))
 	    p = mch_getenv((char_u *)"LANG");
     }
 # endif
 # ifdef WIN32
     p = gettext_lang(p);
 # endif
-    return p;
+    return is_valid_mess_lang(p) ? p : NULL;
 }
 #endif
 
--- a/src/version.c
+++ b/src/version.c
@@ -793,6 +793,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    512,
+/**/
     511,
 /**/
     510,