mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
updated for version 7.3.161
Problem: Items on the stack may be too big. Solution: Make items static or allocate them.
This commit is contained in:
33
src/eval.c
33
src/eval.c
@@ -11100,18 +11100,22 @@ f_getcwd(argvars, rettv)
|
||||
typval_T *argvars UNUSED;
|
||||
typval_T *rettv;
|
||||
{
|
||||
char_u cwd[MAXPATHL];
|
||||
char_u *cwd;
|
||||
|
||||
rettv->v_type = VAR_STRING;
|
||||
if (mch_dirname(cwd, MAXPATHL) == FAIL)
|
||||
rettv->vval.v_string = NULL;
|
||||
else
|
||||
rettv->vval.v_string = NULL;
|
||||
cwd = alloc(MAXPATHL);
|
||||
if (cwd != NULL)
|
||||
{
|
||||
rettv->vval.v_string = vim_strsave(cwd);
|
||||
if (mch_dirname(cwd, MAXPATHL) != FAIL)
|
||||
{
|
||||
rettv->vval.v_string = vim_strsave(cwd);
|
||||
#ifdef BACKSLASH_IN_FILENAME
|
||||
if (rettv->vval.v_string != NULL)
|
||||
slash_adjust(rettv->vval.v_string);
|
||||
if (rettv->vval.v_string != NULL)
|
||||
slash_adjust(rettv->vval.v_string);
|
||||
#endif
|
||||
}
|
||||
vim_free(cwd);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14938,6 +14942,9 @@ f_resolve(argvars, rettv)
|
||||
typval_T *rettv;
|
||||
{
|
||||
char_u *p;
|
||||
#ifdef HAVE_READLINK
|
||||
char_u *buf = NULL;
|
||||
#endif
|
||||
|
||||
p = get_tv_string(&argvars[0]);
|
||||
#ifdef FEAT_SHORTCUT
|
||||
@@ -14953,7 +14960,6 @@ f_resolve(argvars, rettv)
|
||||
#else
|
||||
# ifdef HAVE_READLINK
|
||||
{
|
||||
char_u buf[MAXPATHL + 1];
|
||||
char_u *cpy;
|
||||
int len;
|
||||
char_u *remain = NULL;
|
||||
@@ -14981,6 +14987,10 @@ f_resolve(argvars, rettv)
|
||||
q[-1] = NUL;
|
||||
}
|
||||
|
||||
buf = alloc(MAXPATHL + 1);
|
||||
if (buf == NULL)
|
||||
goto fail;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
for (;;)
|
||||
@@ -15124,6 +15134,7 @@ f_resolve(argvars, rettv)
|
||||
|
||||
#ifdef HAVE_READLINK
|
||||
fail:
|
||||
vim_free(buf);
|
||||
#endif
|
||||
rettv->v_type = VAR_STRING;
|
||||
}
|
||||
@@ -17604,18 +17615,22 @@ f_tagfiles(argvars, rettv)
|
||||
typval_T *argvars UNUSED;
|
||||
typval_T *rettv;
|
||||
{
|
||||
char_u fname[MAXPATHL + 1];
|
||||
char_u *fname;
|
||||
tagname_T tn;
|
||||
int first;
|
||||
|
||||
if (rettv_list_alloc(rettv) == FAIL)
|
||||
return;
|
||||
fname = alloc(MAXPATHL);
|
||||
if (fname == NULL)
|
||||
return;
|
||||
|
||||
for (first = TRUE; ; first = FALSE)
|
||||
if (get_tagfname(&tn, first, fname) == FAIL
|
||||
|| list_append_string(rettv->vval.v_list, fname, -1) == FAIL)
|
||||
break;
|
||||
tagname_free(&tn);
|
||||
vim_free(fname);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user