mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.0573: using :version twice leaks memory
Problem: using :version twice leaks memory Solution: Only initialize variables once. (Dominique Pelle, closes #5917)
This commit is contained in:
parent
df1956075d
commit
278e83863b
@ -1258,7 +1258,7 @@ extern char *Version;
|
|||||||
#if defined(HAVE_DATE_TIME) && defined(VMS) && defined(VAXC)
|
#if defined(HAVE_DATE_TIME) && defined(VMS) && defined(VAXC)
|
||||||
extern char longVersion[];
|
extern char longVersion[];
|
||||||
#else
|
#else
|
||||||
EXTERN char *longVersion;
|
EXTERN char *longVersion INIT(= NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -285,6 +285,7 @@ NEW_TESTS = \
|
|||||||
test_utf8 \
|
test_utf8 \
|
||||||
test_utf8_comparisons \
|
test_utf8_comparisons \
|
||||||
test_vartabs \
|
test_vartabs \
|
||||||
|
test_version \
|
||||||
$(TEST_VIM9) \
|
$(TEST_VIM9) \
|
||||||
test_viminfo \
|
test_viminfo \
|
||||||
test_vimscript \
|
test_vimscript \
|
||||||
|
@ -32,4 +32,5 @@ source test_tabline.vim
|
|||||||
source test_tagcase.vim
|
source test_tagcase.vim
|
||||||
source test_tagfunc.vim
|
source test_tagfunc.vim
|
||||||
source test_unlet.vim
|
source test_unlet.vim
|
||||||
|
source test_version.vim
|
||||||
source test_wnext.vim
|
source test_wnext.vim
|
||||||
|
10
src/testdir/test_version.vim
Normal file
10
src/testdir/test_version.vim
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
" Test :version Ex command
|
||||||
|
|
||||||
|
func Test_version()
|
||||||
|
" version should always return the same string.
|
||||||
|
let v1 = execute('version')
|
||||||
|
let v2 = execute('version')
|
||||||
|
call assert_equal(v1, v2)
|
||||||
|
|
||||||
|
call assert_match("^\n\nVIM - Vi IMproved .*", v1)
|
||||||
|
endfunc
|
@ -54,6 +54,8 @@ init_longVersion(void)
|
|||||||
void
|
void
|
||||||
init_longVersion(void)
|
init_longVersion(void)
|
||||||
{
|
{
|
||||||
|
if (longVersion == NULL)
|
||||||
|
{
|
||||||
char *date_time = __DATE__ " " __TIME__;
|
char *date_time = __DATE__ " " __TIME__;
|
||||||
char *msg = _("%s (%s, compiled %s)");
|
char *msg = _("%s (%s, compiled %s)");
|
||||||
size_t len = strlen(msg)
|
size_t len = strlen(msg)
|
||||||
@ -67,6 +69,7 @@ init_longVersion(void)
|
|||||||
else
|
else
|
||||||
vim_snprintf(longVersion, len, msg,
|
vim_snprintf(longVersion, len, msg,
|
||||||
VIM_VERSION_LONG_ONLY, VIM_VERSION_DATE_ONLY, date_time);
|
VIM_VERSION_LONG_ONLY, VIM_VERSION_DATE_ONLY, date_time);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
@ -738,6 +741,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
573,
|
||||||
/**/
|
/**/
|
||||||
572,
|
572,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user