aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJames McCoy <jamessan@jamessan.com>2019-04-07 19:50:54 -0400
committerJustin M. Keyes <justinkz@gmail.com>2019-04-12 02:43:59 +0200
commit1793ba81762f5b3ba3e10357b490cf4165aafcea (patch)
treef498dcdfa46dce651bd8509f8926b5ff0e621794 /src
parent947069ba1438e9d13e2db30f2aeaa05824c876d2 (diff)
downloadrneovim-1793ba81762f5b3ba3e10357b490cf4165aafcea.tar.gz
rneovim-1793ba81762f5b3ba3e10357b490cf4165aafcea.tar.bz2
rneovim-1793ba81762f5b3ba3e10357b490cf4165aafcea.zip
Make SHM_ALL to a variable instead of a compound literal #define
gcc-9 has [improved compliance] with the C spec for lifetime of compound literals, tying their lifetime to block scope instead of function scope. This makes the behavior comparable to all other automatic variables. Using the SHM_ALL #define instantiated a compound literal local to an if clause and assigned the address to a "char_u *". Since the pointer was then being used outside of the if clause, it was using an invalid address. [improved compliance]: https://gcc.gnu.org/gcc-9/porting_to.html#complit Closes #9855
Diffstat (limited to 'src')
-rw-r--r--src/nvim/option.c9
-rw-r--r--src/nvim/option_defs.h8
2 files changed, 9 insertions, 8 deletions
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 8c692f9f42..cc612a6d99 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -306,6 +306,15 @@ static char *(p_cot_values[]) = { "menu", "menuone", "longest", "preview",
static char *(p_icm_values[]) = { "nosplit", "split", NULL };
static char *(p_scl_values[]) = { "yes", "no", "auto", NULL };
+/// All possible flags for 'shm'.
+static char_u SHM_ALL[] = {
+ SHM_RO, SHM_MOD, SHM_FILE, SHM_LAST, SHM_TEXT, SHM_LINES, SHM_NEW, SHM_WRI,
+ SHM_ABBREVIATIONS, SHM_WRITE, SHM_TRUNC, SHM_TRUNCALL, SHM_OVER,
+ SHM_OVERALL, SHM_SEARCH, SHM_ATTENTION, SHM_INTRO, SHM_COMPLETIONMENU,
+ SHM_RECORDING, SHM_FILEINFO,
+ 0,
+};
+
#ifdef INCLUDE_GENERATED_DECLARATIONS
# include "option.c.generated.h"
#endif
diff --git a/src/nvim/option_defs.h b/src/nvim/option_defs.h
index 6a0d0e32e0..82f7fc2107 100644
--- a/src/nvim/option_defs.h
+++ b/src/nvim/option_defs.h
@@ -178,14 +178,6 @@ enum {
SHM_RO, SHM_MOD, SHM_FILE, SHM_LAST, SHM_TEXT, SHM_LINES, SHM_NEW, SHM_WRI, \
0, \
})
-/// All possible flags for 'shm'.
-#define SHM_ALL ((char_u[]) { \
- SHM_RO, SHM_MOD, SHM_FILE, SHM_LAST, SHM_TEXT, SHM_LINES, SHM_NEW, SHM_WRI, \
- SHM_ABBREVIATIONS, SHM_WRITE, SHM_TRUNC, SHM_TRUNCALL, SHM_OVER, \
- SHM_OVERALL, SHM_SEARCH, SHM_ATTENTION, SHM_INTRO, SHM_COMPLETIONMENU, \
- SHM_RECORDING, SHM_FILEINFO, \
- 0, \
-})
/* characters for p_go: */
#define GO_ASEL 'a' /* autoselect */