changeset 23958:41cf615ab57f v8.2.2521

patch 8.2.2521: some compilers can't handle pointer initialization Commit: https://github.com/vim/vim/commit/333bd56422d840961c6df51d4450c884f8500994 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Feb 16 22:22:13 2021 +0100 patch 8.2.2521: some compilers can't handle pointer initialization Problem: Some compilers can't handle pointer initialization. (John Marriott) Solution: Use a local struct and assign it afterwards.
author Bram Moolenaar <Bram@vim.org>
date Tue, 16 Feb 2021 22:30:03 +0100
parents dcac28f688ab
children 23cc161f0814
files src/screen.c src/version.c
diffstat 2 files changed, 23 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/screen.c
+++ b/src/screen.c
@@ -4768,20 +4768,21 @@ set_chars_option(win_T *wp, char_u **var
 	{&fill_diff,	"diff"},
 	{&fill_eob,	"eob"},
     };
+    static lcs_chars_T lcs_chars;
     struct charstab lcstab[] =
     {
-	{&wp->w_lcs_chars.eol,	"eol"},
-	{&wp->w_lcs_chars.ext,	"extends"},
-	{&wp->w_lcs_chars.nbsp,	"nbsp"},
-	{&wp->w_lcs_chars.prec,	"precedes"},
-	{&wp->w_lcs_chars.space,"space"},
-	{&wp->w_lcs_chars.tab2,	"tab"},
-	{&wp->w_lcs_chars.trail,"trail"},
-	{&wp->w_lcs_chars.lead,	"lead"},
+	{&lcs_chars.eol,	"eol"},
+	{&lcs_chars.ext,	"extends"},
+	{&lcs_chars.nbsp,	"nbsp"},
+	{&lcs_chars.prec,	"precedes"},
+	{&lcs_chars.space,	"space"},
+	{&lcs_chars.tab2,	"tab"},
+	{&lcs_chars.trail,	"trail"},
+	{&lcs_chars.lead,	"lead"},
 #ifdef FEAT_CONCEAL
-	{&wp->w_lcs_chars.conceal,	"conceal"},
+	{&lcs_chars.conceal,	"conceal"},
 #else
-	{NULL,		"conceal"},
+	{NULL,			"conceal"},
 #endif
     };
     struct charstab *tab;
@@ -4789,6 +4790,7 @@ set_chars_option(win_T *wp, char_u **var
     if (varp == &p_lcs || varp == &wp->w_p_lcs)
     {
 	tab = lcstab;
+	CLEAR_FIELD(lcs_chars);
 	entries = sizeof(lcstab) / sizeof(struct charstab);
 	if (varp == &wp->w_p_lcs && wp->w_p_lcs[0] == NUL)
 	    varp = &p_lcs;
@@ -4813,8 +4815,8 @@ set_chars_option(win_T *wp, char_u **var
 
 	    if (varp == &p_lcs || varp == &wp->w_p_lcs)
 	    {
-		wp->w_lcs_chars.tab1 = NUL;
-		wp->w_lcs_chars.tab3 = NUL;
+		lcs_chars.tab1 = NUL;
+		lcs_chars.tab3 = NUL;
 	    }
 	    else
 	    {
@@ -4837,7 +4839,7 @@ set_chars_option(win_T *wp, char_u **var
 		    c1 = mb_ptr2char_adv(&s);
 		    if (mb_char2cells(c1) > 1)
 			continue;
-		    if (tab[i].cp == &wp->w_lcs_chars.tab2)
+		    if (tab[i].cp == &lcs_chars.tab2)
 		    {
 			if (*s == NUL)
 			    continue;
@@ -4856,11 +4858,11 @@ set_chars_option(win_T *wp, char_u **var
 		    {
 			if (round)
 			{
-			    if (tab[i].cp == &wp->w_lcs_chars.tab2)
+			    if (tab[i].cp == &lcs_chars.tab2)
 			    {
-				wp->w_lcs_chars.tab1 = c1;
-				wp->w_lcs_chars.tab2 = c2;
-				wp->w_lcs_chars.tab3 = c3;
+				lcs_chars.tab1 = c1;
+				lcs_chars.tab2 = c2;
+				lcs_chars.tab3 = c3;
 			    }
 			    else if (tab[i].cp != NULL)
 				*(tab[i].cp) = c1;
@@ -4878,6 +4880,8 @@ set_chars_option(win_T *wp, char_u **var
 		++p;
 	}
     }
+    if (tab == lcstab)
+	wp->w_lcs_chars = lcs_chars;
 
     return NULL;	// no error
 }
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2521,
+/**/
     2520,
 /**/
     2519,