1
0
forked from aniani/vim

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:
Bram Moolenaar
2011-04-11 21:35:11 +02:00
parent ef9d6aa70d
commit d9462e394a
14 changed files with 273 additions and 121 deletions

View File

@@ -5093,14 +5093,14 @@ check_more(message, forceit)
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL)
{
char_u buff[IOSIZE];
char_u buff[DIALOG_MSG_SIZE];
if (n == 1)
vim_strncpy(buff,
(char_u *)_("1 more file to edit. Quit anyway?"),
IOSIZE - 1);
DIALOG_MSG_SIZE - 1);
else
vim_snprintf((char *)buff, IOSIZE,
vim_snprintf((char *)buff, DIALOG_MSG_SIZE,
_("%d more files to edit. Quit anyway?"), n);
if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 1) == VIM_YES)
return OK;
@@ -8926,35 +8926,42 @@ ex_mkrc(eap)
failed = TRUE;
if (eap->cmdidx == CMD_mksession)
{
char_u dirnow[MAXPATHL]; /* current directory */
char_u *dirnow; /* current directory */
/*
* Change to session file's dir.
*/
if (mch_dirname(dirnow, MAXPATHL) == FAIL
dirnow = alloc(MAXPATHL);
if (dirnow == NULL)
failed = TRUE;
else
{
/*
* Change to session file's dir.
*/
if (mch_dirname(dirnow, MAXPATHL) == FAIL
|| mch_chdir((char *)dirnow) != 0)
*dirnow = NUL;
if (*dirnow != NUL && (ssop_flags & SSOP_SESDIR))
{
if (vim_chdirfile(fname) == OK)
shorten_fnames(TRUE);
}
else if (*dirnow != NUL
&& (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
{
if (mch_chdir((char *)globaldir) == 0)
shorten_fnames(TRUE);
}
*dirnow = NUL;
if (*dirnow != NUL && (ssop_flags & SSOP_SESDIR))
{
if (vim_chdirfile(fname) == OK)
shorten_fnames(TRUE);
}
else if (*dirnow != NUL
&& (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
{
if (mch_chdir((char *)globaldir) == 0)
shorten_fnames(TRUE);
}
failed |= (makeopens(fd, dirnow) == FAIL);
failed |= (makeopens(fd, dirnow) == FAIL);
/* restore original dir */
if (*dirnow != NUL && ((ssop_flags & SSOP_SESDIR)
/* restore original dir */
if (*dirnow != NUL && ((ssop_flags & SSOP_SESDIR)
|| ((ssop_flags & SSOP_CURDIR) && globaldir != NULL)))
{
if (mch_chdir((char *)dirnow) != 0)
EMSG(_(e_prev_dir));
shorten_fnames(TRUE);
{
if (mch_chdir((char *)dirnow) != 0)
EMSG(_(e_prev_dir));
shorten_fnames(TRUE);
}
vim_free(dirnow);
}
}
else
@@ -8985,10 +8992,15 @@ ex_mkrc(eap)
else if (eap->cmdidx == CMD_mksession)
{
/* successful session write - set this_session var */
char_u tbuf[MAXPATHL];
char_u *tbuf;
if (vim_FullName(fname, tbuf, MAXPATHL, FALSE) == OK)
set_vim_var_string(VV_THIS_SESSION, tbuf, -1);
tbuf = alloc(MAXPATHL);
if (tbuf != NULL)
{
if (vim_FullName(fname, tbuf, MAXPATHL, FALSE) == OK)
set_vim_var_string(VV_THIS_SESSION, tbuf, -1);
vim_free(tbuf);
}
}
#endif
#ifdef MKSESSION_NL
@@ -10677,7 +10689,7 @@ ses_arglist(fd, cmd, gap, fullname, flagp)
unsigned *flagp;
{
int i;
char_u buf[MAXPATHL];
char_u *buf = NULL;
char_u *s;
if (gap->ga_len == 0)
@@ -10692,11 +10704,19 @@ ses_arglist(fd, cmd, gap, fullname, flagp)
{
if (fullname)
{
(void)vim_FullName(s, buf, MAXPATHL, FALSE);
s = buf;
buf = alloc(MAXPATHL);
if (buf != NULL)
{
(void)vim_FullName(s, buf, MAXPATHL, FALSE);
s = buf;
}
}
if (fputs(" ", fd) < 0 || ses_put_fname(fd, s, flagp) == FAIL)
{
vim_free(buf);
return FAIL;
}
vim_free(buf);
}
}
return put_eol(fd);
@@ -10925,7 +10945,7 @@ ex_viminfo(eap)
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) || defined(PROTO)
/*
* Make a dialog message in "buff[IOSIZE]".
* Make a dialog message in "buff[DIALOG_MSG_SIZE]".
* "format" must contain "%s".
*/
void
@@ -10936,7 +10956,7 @@ dialog_msg(buff, format, fname)
{
if (fname == NULL)
fname = (char_u *)_("Untitled");
vim_snprintf((char *)buff, IOSIZE, format, fname);
vim_snprintf((char *)buff, DIALOG_MSG_SIZE, format, fname);
}
#endif