]> granicus.if.org Git - vim/commitdiff
patch 8.2.2521: some compilers can't handle pointer initialization v8.2.2521
authorBram Moolenaar <Bram@vim.org>
Tue, 16 Feb 2021 21:22:13 +0000 (22:22 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 16 Feb 2021 21:22:13 +0000 (22:22 +0100)
Problem:    Some compilers can't handle pointer initialization. (John
            Marriott)
Solution:   Use a local struct and assign it afterwards.

src/screen.c
src/version.c

index 176f98d571a124c9b712091e9731a100d3d6d747..b6cc9bd91d5556d569508c377dff2bf5d96e47be 100644 (file)
@@ -4768,20 +4768,21 @@ set_chars_option(win_T *wp, char_u **varp)
        {&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 **varp)
     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 **varp)
 
            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 **varp)
                    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 **varp)
                    {
                        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 **varp)
                ++p;
        }
     }
+    if (tab == lcstab)
+       wp->w_lcs_chars = lcs_chars;
 
     return NULL;       // no error
 }
index c1d89c04c1a4508cf0ae97acb255817770e7aae7..7323b8ff29a2ee38a0e1748b06b835516067d59c 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2521,
 /**/
     2520,
 /**/