# HG changeset patch # User Bram Moolenaar # Date 1613511003 -3600 # Node ID 41cf615ab57f8b32a1770744ecba0032b2f3b791 # Parent dcac28f688abf0258674547f75ed24a405c09a01 patch 8.2.2521: some compilers can't handle pointer initialization Commit: https://github.com/vim/vim/commit/333bd56422d840961c6df51d4450c884f8500994 Author: Bram Moolenaar 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. diff --git a/src/screen.c b/src/screen.c --- 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 } diff --git a/src/version.c b/src/version.c --- 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,