Mercurial > vim
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 }