patch 9.0.0284: using static buffer for multiple completion functions
Problem: Using static buffer for multiple completion functions.
Solution: Use one buffer in expand_T.
diff --git a/src/misc1.c b/src/misc1.c
index 6383922..e8216a0 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -2016,18 +2016,14 @@
expand_T *xp UNUSED,
int idx)
{
-# if defined(AMIGA)
- /*
- * No environ[] on the Amiga.
- */
+#if defined(AMIGA)
+ // No environ[] on the Amiga.
return NULL;
-# else
+#else
# ifndef __WIN32__
// Borland C++ 5.2 has this in a header file.
extern char **environ;
# endif
-# define ENVNAMELEN 100
- static char_u name[ENVNAMELEN];
char_u *str;
int n;
@@ -2035,15 +2031,15 @@
if (str == NULL)
return NULL;
- for (n = 0; n < ENVNAMELEN - 1; ++n)
+ for (n = 0; n < EXPAND_BUF_LEN - 1; ++n)
{
if (str[n] == '=' || str[n] == NUL)
break;
- name[n] = str[n];
+ xp->xp_buf[n] = str[n];
}
- name[n] = NUL;
- return name;
-# endif
+ xp->xp_buf[n] = NUL;
+ return xp->xp_buf;
+#endif
}
/*