To: vim_dev@googlegroups.com
Subject: Patch 7.3.161
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.3.161
Problem: Items on the stack may be too big.
Solution: Make items static or allocate them.
Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c,
src/fileio.c, src/hardcopy.c, src/quickfix.c, src/main.c,
src/netbeans.c, src/spell.c, src/tag.c, src/vim.h, src/xxd/xxd.c
*** ../vim-7.3.160/src/eval.c 2011-04-11 13:46:07.000000000 +0200
--- src/eval.c 2011-04-11 21:05:50.000000000 +0200
***************
*** 11100,11117 ****
typval_T *argvars UNUSED;
typval_T *rettv;
{
! char_u cwd[MAXPATHL];
rettv->v_type = VAR_STRING;
! if (mch_dirname(cwd, MAXPATHL) == FAIL)
! rettv->vval.v_string = NULL;
! else
{
! rettv->vval.v_string = vim_strsave(cwd);
#ifdef BACKSLASH_IN_FILENAME
! if (rettv->vval.v_string != NULL)
! slash_adjust(rettv->vval.v_string);
#endif
}
}
--- 11100,11121 ----
typval_T *argvars UNUSED;
typval_T *rettv;
{
! char_u *cwd;
rettv->v_type = VAR_STRING;
! rettv->vval.v_string = NULL;
! cwd = alloc(MAXPATHL);
! if (cwd != NULL)
{
! 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);
#endif
+ }
+ vim_free(cwd);
}
}
***************
*** 14938,14943 ****
--- 14942,14950 ----
typval_T *rettv;
{
char_u *p;
+ #ifdef HAVE_READLINK
+ char_u *buf = NULL;
+ #endif
p = get_tv_string(&argvars[0]);
#ifdef FEAT_SHORTCUT
***************
*** 14953,14959 ****
#else
# ifdef HAVE_READLINK
{
- char_u buf[MAXPATHL + 1];
char_u *cpy;
int len;
char_u *remain = NULL;
--- 14960,14965 ----
***************
*** 14981,14986 ****
--- 14987,14996 ----
q[-1] = NUL;
}
+ buf = alloc(MAXPATHL + 1);
+ if (buf == NULL)
+ goto fail;
+
for (;;)
{
for (;;)
***************
*** 15124,15129 ****
--- 15134,15140 ----
#ifdef HAVE_READLINK
fail:
+ vim_free(buf);
#endif
rettv->v_type = VAR_STRING;
}
***************
*** 17604,17621 ****
typval_T *argvars UNUSED;
typval_T *rettv;
{
! char_u fname[MAXPATHL + 1];
tagname_T tn;
int first;
if (rettv_list_alloc(rettv) == FAIL)
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);
}
/*
--- 17615,17636 ----
typval_T *argvars UNUSED;
typval_T *rettv;
{
! 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);
}
/*
*** ../vim-7.3.160/src/ex_cmds.c 2011-02-01 13:48:47.000000000 +0100
--- src/ex_cmds.c 2011-04-11 20:51:34.000000000 +0200
***************
*** 2777,2783 ****
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
if (p_confirm || cmdmod.confirm)
{
! char_u buff[IOSIZE];
dialog_msg(buff, _("Overwrite existing file \"%s\"?"), fname);
if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES)
--- 2777,2783 ----
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
if (p_confirm || cmdmod.confirm)
{
! char_u buff[DIALOG_MSG_SIZE];
dialog_msg(buff, _("Overwrite existing file \"%s\"?"), fname);
if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES)
***************
*** 2795,2801 ****
/* For ":w! filename" check that no swap file exists for "filename". */
if (other && !emsg_silent)
{
! char_u dir[MAXPATHL];
char_u *p;
int r;
char_u *swapname;
--- 2795,2801 ----
/* For ":w! filename" check that no swap file exists for "filename". */
if (other && !emsg_silent)
{
! char_u *dir;
char_u *p;
int r;
char_u *swapname;
***************
*** 2806,2825 ****
* Use 'shortname' of the current buffer, since there is no buffer
* for the written file. */
if (*p_dir == NUL)
STRCPY(dir, ".");
else
{
p = p_dir;
copy_option_part(&p, dir, MAXPATHL, ",");
}
swapname = makeswapname(fname, ffname, curbuf, dir);
r = vim_fexists(swapname);
if (r)
{
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
if (p_confirm || cmdmod.confirm)
{
! char_u buff[IOSIZE];
dialog_msg(buff,
_("Swap file \"%s\" exists, overwrite anyway?"),
--- 2806,2834 ----
* Use 'shortname' of the current buffer, since there is no buffer
* for the written file. */
if (*p_dir == NUL)
+ {
+ dir = alloc(5);
+ if (dir == NULL)
+ return FAIL;
STRCPY(dir, ".");
+ }
else
{
+ dir = alloc(MAXPATHL);
+ if (dir == NULL)
+ return FAIL;
p = p_dir;
copy_option_part(&p, dir, MAXPATHL, ",");
}
swapname = makeswapname(fname, ffname, curbuf, dir);
+ vim_free(dir);
r = vim_fexists(swapname);
if (r)
{
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
if (p_confirm || cmdmod.confirm)
{
! char_u buff[DIALOG_MSG_SIZE];
dialog_msg(buff,
_("Swap file \"%s\" exists, overwrite anyway?"),
***************
*** 2969,2975 ****
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL)
{
! char_u buff[IOSIZE];
if (buf->b_p_ro)
dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"),
--- 2978,2984 ----
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL)
{
! char_u buff[DIALOG_MSG_SIZE];
if (buf->b_p_ro)
dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"),
*** ../vim-7.3.160/src/ex_cmds2.c 2011-02-25 14:46:06.000000000 +0100
--- src/ex_cmds2.c 2011-04-11 20:51:40.000000000 +0200
***************
*** 1492,1498 ****
buf_T *buf;
int checkall; /* may abandon all changed buffers */
{
! char_u buff[IOSIZE];
int ret;
buf_T *buf2;
--- 1492,1498 ----
buf_T *buf;
int checkall; /* may abandon all changed buffers */
{
! char_u buff[DIALOG_MSG_SIZE];
int ret;
buf_T *buf2;
*** ../vim-7.3.160/src/ex_docmd.c 2011-04-11 16:56:29.000000000 +0200
--- src/ex_docmd.c 2011-04-11 21:20:35.000000000 +0200
***************
*** 5093,5106 ****
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL)
{
! char_u buff[IOSIZE];
if (n == 1)
vim_strncpy(buff,
(char_u *)_("1 more file to edit. Quit anyway?"),
! IOSIZE - 1);
else
! vim_snprintf((char *)buff, IOSIZE,
_("%d more files to edit. Quit anyway?"), n);
if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 1) == VIM_YES)
return OK;
--- 5093,5106 ----
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
if ((p_confirm || cmdmod.confirm) && curbuf->b_fname != NULL)
{
! char_u buff[DIALOG_MSG_SIZE];
if (n == 1)
vim_strncpy(buff,
(char_u *)_("1 more file to edit. Quit anyway?"),
! DIALOG_MSG_SIZE - 1);
else
! 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,8960 ****
failed = TRUE;
if (eap->cmdidx == CMD_mksession)
{
! char_u dirnow[MAXPATHL]; /* current directory */
! /*
! * 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);
! }
! failed |= (makeopens(fd, dirnow) == FAIL);
! /* 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);
}
}
else
--- 8926,8967 ----
failed = TRUE;
if (eap->cmdidx == CMD_mksession)
{
! char_u *dirnow; /* current directory */
! 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);
! }
! failed |= (makeopens(fd, dirnow) == FAIL);
! /* 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);
! }
! vim_free(dirnow);
}
}
else
***************
*** 8985,8994 ****
else if (eap->cmdidx == CMD_mksession)
{
/* successful session write - set this_session var */
! char_u tbuf[MAXPATHL];
! if (vim_FullName(fname, tbuf, MAXPATHL, FALSE) == OK)
! set_vim_var_string(VV_THIS_SESSION, tbuf, -1);
}
#endif
#ifdef MKSESSION_NL
--- 8992,9006 ----
else if (eap->cmdidx == CMD_mksession)
{
/* successful session write - set this_session var */
! char_u *tbuf;
! 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,10683 ****
unsigned *flagp;
{
int i;
! char_u buf[MAXPATHL];
char_u *s;
if (gap->ga_len == 0)
--- 10689,10695 ----
unsigned *flagp;
{
int i;
! char_u *buf = NULL;
char_u *s;
if (gap->ga_len == 0)
***************
*** 10692,10702 ****
{
if (fullname)
{
! (void)vim_FullName(s, buf, MAXPATHL, FALSE);
! s = buf;
}
if (fputs(" ", fd) < 0 || ses_put_fname(fd, s, flagp) == FAIL)
return FAIL;
}
}
return put_eol(fd);
--- 10704,10722 ----
{
if (fullname)
{
! 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,10931 ****
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) || defined(PROTO)
/*
! * Make a dialog message in "buff[IOSIZE]".
* "format" must contain "%s".
*/
void
--- 10945,10951 ----
#if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG) || defined(PROTO)
/*
! * Make a dialog message in "buff[DIALOG_MSG_SIZE]".
* "format" must contain "%s".
*/
void
***************
*** 10936,10942 ****
{
if (fname == NULL)
fname = (char_u *)_("Untitled");
! vim_snprintf((char *)buff, IOSIZE, format, fname);
}
#endif
--- 10956,10962 ----
{
if (fname == NULL)
fname = (char_u *)_("Untitled");
! vim_snprintf((char *)buff, DIALOG_MSG_SIZE, format, fname);
}
#endif
*** ../vim-7.3.160/src/fileio.c 2011-02-25 16:52:13.000000000 +0100
--- src/fileio.c 2011-04-11 18:35:10.000000000 +0200
***************
*** 6023,6037 ****
shorten_fname1(full_path)
char_u *full_path;
{
! char_u dirname[MAXPATHL];
char_u *p = full_path;
if (mch_dirname(dirname, MAXPATHL) == OK)
{
p = shorten_fname(full_path, dirname);
if (p == NULL || *p == NUL)
p = full_path;
}
return p;
}
#endif
--- 6023,6041 ----
shorten_fname1(full_path)
char_u *full_path;
{
! char_u *dirname;
char_u *p = full_path;
+ dirname = alloc(MAXPATHL);
+ if (dirname == NULL)
+ return full_path;
if (mch_dirname(dirname, MAXPATHL) == OK)
{
p = shorten_fname(full_path, dirname);
if (p == NULL || *p == NUL)
p = full_path;
}
+ vim_free(dirname);
return p;
}
#endif
*** ../vim-7.3.160/src/hardcopy.c 2011-04-11 16:56:29.000000000 +0200
--- src/hardcopy.c 2011-04-11 18:23:38.000000000 +0200
***************
*** 1759,1765 ****
char *name;
struct prt_ps_resource_S *resource;
{
! char_u buffer[MAXPATHL + 1];
vim_strncpy(resource->name, (char_u *)name, 63);
/* Look for named resource file in runtimepath */
--- 1759,1770 ----
char *name;
struct prt_ps_resource_S *resource;
{
! char_u *buffer;
! int retval;
!
! buffer = alloc(MAXPATHL + 1);
! if (buffer == NULL)
! return FALSE;
vim_strncpy(resource->name, (char_u *)name, 63);
/* Look for named resource file in runtimepath */
***************
*** 1768,1776 ****
vim_strcat(buffer, (char_u *)name, MAXPATHL);
vim_strcat(buffer, (char_u *)".ps", MAXPATHL);
resource->filename[0] = NUL;
! return (do_in_runtimepath(buffer, FALSE, prt_resource_name,
resource->filename)
&& resource->filename[0] != NUL);
}
/* PS CR and LF characters have platform independent values */
--- 1773,1783 ----
vim_strcat(buffer, (char_u *)name, MAXPATHL);
vim_strcat(buffer, (char_u *)".ps", MAXPATHL);
resource->filename[0] = NUL;
! retval = (do_in_runtimepath(buffer, FALSE, prt_resource_name,
resource->filename)
&& resource->filename[0] != NUL);
+ vim_free(buffer);
+ return retval;
}
/* PS CR and LF characters have platform independent values */
***************
*** 2848,2862 ****
double right;
double top;
double bottom;
! struct prt_ps_resource_S res_prolog;
! struct prt_ps_resource_S res_encoding;
char buffer[256];
char_u *p_encoding;
char_u *p;
#ifdef FEAT_MBYTE
! struct prt_ps_resource_S res_cidfont;
! struct prt_ps_resource_S res_cmap;
#endif
/*
* PS DSC Header comments - no PS code!
--- 2855,2887 ----
double right;
double top;
double bottom;
! struct prt_ps_resource_S *res_prolog;
! struct prt_ps_resource_S *res_encoding;
char buffer[256];
char_u *p_encoding;
char_u *p;
#ifdef FEAT_MBYTE
! struct prt_ps_resource_S *res_cidfont;
! struct prt_ps_resource_S *res_cmap;
#endif
+ int retval = FALSE;
+
+ res_prolog = (struct prt_ps_resource_S *)
+ alloc(sizeof(struct prt_ps_resource_S));
+ res_encoding = (struct prt_ps_resource_S *)
+ alloc(sizeof(struct prt_ps_resource_S));
+ #ifdef FEAT_MBYTE
+ res_cidfont = (struct prt_ps_resource_S *)
+ alloc(sizeof(struct prt_ps_resource_S));
+ res_cmap = (struct prt_ps_resource_S *)
+ alloc(sizeof(struct prt_ps_resource_S));
+ #endif
+ if (res_prolog == NULL || res_encoding == NULL
+ #ifdef FEAT_MBYTE
+ || res_cidfont == NULL || res_cmap == NULL
+ #endif
+ )
+ goto theend;
/*
* PS DSC Header comments - no PS code!
***************
*** 2932,2958 ****
#endif
/* Search for external resources VIM supplies */
! if (!prt_find_resource("prolog", &res_prolog))
{
EMSG(_("E456: Can't find PostScript resource file \"prolog.ps\""));
return FALSE;
}
! if (!prt_open_resource(&res_prolog))
return FALSE;
! if (!prt_check_resource(&res_prolog, PRT_PROLOG_VERSION))
return FALSE;
#ifdef FEAT_MBYTE
if (prt_out_mbyte)
{
/* Look for required version of multi-byte printing procset */
! if (!prt_find_resource("cidfont", &res_cidfont))
{
EMSG(_("E456: Can't find PostScript resource file \"cidfont.ps\""));
return FALSE;
}
! if (!prt_open_resource(&res_cidfont))
return FALSE;
! if (!prt_check_resource(&res_cidfont, PRT_CID_PROLOG_VERSION))
return FALSE;
}
#endif
--- 2957,2983 ----
#endif
/* Search for external resources VIM supplies */
! if (!prt_find_resource("prolog", res_prolog))
{
EMSG(_("E456: Can't find PostScript resource file \"prolog.ps\""));
return FALSE;
}
! if (!prt_open_resource(res_prolog))
return FALSE;
! if (!prt_check_resource(res_prolog, PRT_PROLOG_VERSION))
return FALSE;
#ifdef FEAT_MBYTE
if (prt_out_mbyte)
{
/* Look for required version of multi-byte printing procset */
! if (!prt_find_resource("cidfont", res_cidfont))
{
EMSG(_("E456: Can't find PostScript resource file \"cidfont.ps\""));
return FALSE;
}
! if (!prt_open_resource(res_cidfont))
return FALSE;
! if (!prt_check_resource(res_cidfont, PRT_CID_PROLOG_VERSION))
return FALSE;
}
#endif
***************
*** 2968,2974 ****
#endif
p_encoding = enc_skip(p_penc);
if (*p_encoding == NUL
! || !prt_find_resource((char *)p_encoding, &res_encoding))
{
/* 'printencoding' not set or not supported - find alternate */
#ifdef FEAT_MBYTE
--- 2993,2999 ----
#endif
p_encoding = enc_skip(p_penc);
if (*p_encoding == NUL
! || !prt_find_resource((char *)p_encoding, res_encoding))
{
/* 'printencoding' not set or not supported - find alternate */
#ifdef FEAT_MBYTE
***************
*** 2977,2989 ****
p_encoding = enc_skip(p_enc);
props = enc_canon_props(p_encoding);
if (!(props & ENC_8BIT)
! || !prt_find_resource((char *)p_encoding, &res_encoding))
/* 8-bit 'encoding' is not supported */
#endif
{
/* Use latin1 as default printing encoding */
p_encoding = (char_u *)"latin1";
! if (!prt_find_resource((char *)p_encoding, &res_encoding))
{
EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
p_encoding);
--- 3002,3014 ----
p_encoding = enc_skip(p_enc);
props = enc_canon_props(p_encoding);
if (!(props & ENC_8BIT)
! || !prt_find_resource((char *)p_encoding, res_encoding))
/* 8-bit 'encoding' is not supported */
#endif
{
/* Use latin1 as default printing encoding */
p_encoding = (char_u *)"latin1";
! if (!prt_find_resource((char *)p_encoding, res_encoding))
{
EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
p_encoding);
***************
*** 2991,2997 ****
}
}
}
! if (!prt_open_resource(&res_encoding))
return FALSE;
/* For the moment there are no checks on encoding resource files to
* perform */
--- 3016,3022 ----
}
}
}
! if (!prt_open_resource(res_encoding))
return FALSE;
/* For the moment there are no checks on encoding resource files to
* perform */
***************
*** 3005,3017 ****
if (prt_use_courier)
{
/* Include ASCII range encoding vector */
! if (!prt_find_resource(prt_ascii_encoding, &res_encoding))
{
EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
prt_ascii_encoding);
return FALSE;
}
! if (!prt_open_resource(&res_encoding))
return FALSE;
/* For the moment there are no checks on encoding resource files to
* perform */
--- 3030,3042 ----
if (prt_use_courier)
{
/* Include ASCII range encoding vector */
! if (!prt_find_resource(prt_ascii_encoding, res_encoding))
{
EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
prt_ascii_encoding);
return FALSE;
}
! if (!prt_open_resource(res_encoding))
return FALSE;
/* For the moment there are no checks on encoding resource files to
* perform */
***************
*** 3034,3077 ****
if (prt_out_mbyte && prt_custom_cmap)
{
/* Find user supplied CMap */
! if (!prt_find_resource(prt_cmap, &res_cmap))
{
EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
prt_cmap);
return FALSE;
}
! if (!prt_open_resource(&res_cmap))
return FALSE;
}
#endif
/* List resources supplied */
! STRCPY(buffer, res_prolog.title);
STRCAT(buffer, " ");
! STRCAT(buffer, res_prolog.version);
prt_dsc_resources("DocumentSuppliedResources", "procset", buffer);
#ifdef FEAT_MBYTE
if (prt_out_mbyte)
{
! STRCPY(buffer, res_cidfont.title);
STRCAT(buffer, " ");
! STRCAT(buffer, res_cidfont.version);
prt_dsc_resources(NULL, "procset", buffer);
if (prt_custom_cmap)
{
! STRCPY(buffer, res_cmap.title);
STRCAT(buffer, " ");
! STRCAT(buffer, res_cmap.version);
prt_dsc_resources(NULL, "cmap", buffer);
}
}
if (!prt_out_mbyte || prt_use_courier)
#endif
{
! STRCPY(buffer, res_encoding.title);
STRCAT(buffer, " ");
! STRCAT(buffer, res_encoding.version);
prt_dsc_resources(NULL, "encoding", buffer);
}
prt_dsc_requirements(prt_duplex, prt_tumble, prt_collate,
--- 3059,3102 ----
if (prt_out_mbyte && prt_custom_cmap)
{
/* Find user supplied CMap */
! if (!prt_find_resource(prt_cmap, res_cmap))
{
EMSG2(_("E456: Can't find PostScript resource file \"%s.ps\""),
prt_cmap);
return FALSE;
}
! if (!prt_open_resource(res_cmap))
return FALSE;
}
#endif
/* List resources supplied */
! STRCPY(buffer, res_prolog->title);
STRCAT(buffer, " ");
! STRCAT(buffer, res_prolog->version);
prt_dsc_resources("DocumentSuppliedResources", "procset", buffer);
#ifdef FEAT_MBYTE
if (prt_out_mbyte)
{
! STRCPY(buffer, res_cidfont->title);
STRCAT(buffer, " ");
! STRCAT(buffer, res_cidfont->version);
prt_dsc_resources(NULL, "procset", buffer);
if (prt_custom_cmap)
{
! STRCPY(buffer, res_cmap->title);
STRCAT(buffer, " ");
! STRCAT(buffer, res_cmap->version);
prt_dsc_resources(NULL, "cmap", buffer);
}
}
if (!prt_out_mbyte || prt_use_courier)
#endif
{
! STRCPY(buffer, res_encoding->title);
STRCAT(buffer, " ");
! STRCAT(buffer, res_encoding->version);
prt_dsc_resources(NULL, "encoding", buffer);
}
prt_dsc_requirements(prt_duplex, prt_tumble, prt_collate,
***************
*** 3114,3128 ****
prt_dsc_noarg("BeginProlog");
/* Add required procsets - NOTE: order is important! */
! if (!prt_add_resource(&res_prolog))
return FALSE;
#ifdef FEAT_MBYTE
if (prt_out_mbyte)
{
/* Add CID font procset, and any user supplied CMap */
! if (!prt_add_resource(&res_cidfont))
return FALSE;
! if (prt_custom_cmap && !prt_add_resource(&res_cmap))
return FALSE;
}
#endif
--- 3139,3153 ----
prt_dsc_noarg("BeginProlog");
/* Add required procsets - NOTE: order is important! */
! if (!prt_add_resource(res_prolog))
return FALSE;
#ifdef FEAT_MBYTE
if (prt_out_mbyte)
{
/* Add CID font procset, and any user supplied CMap */
! if (!prt_add_resource(res_cidfont))
return FALSE;
! if (prt_custom_cmap && !prt_add_resource(res_cmap))
return FALSE;
}
#endif
***************
*** 3132,3138 ****
#endif
/* There will be only one Roman font encoding to be included in the PS
* file. */
! if (!prt_add_resource(&res_encoding))
return FALSE;
prt_dsc_noarg("EndProlog");
--- 3157,3163 ----
#endif
/* There will be only one Roman font encoding to be included in the PS
* file. */
! if (!prt_add_resource(res_encoding))
return FALSE;
prt_dsc_noarg("EndProlog");
***************
*** 3248,3254 ****
prt_dsc_noarg("EndSetup");
/* Fail if any problems writing out to the PS file */
! return !prt_file_error;
}
void
--- 3273,3289 ----
prt_dsc_noarg("EndSetup");
/* Fail if any problems writing out to the PS file */
! retval = !prt_file_error;
!
! theend:
! vim_free(res_prolog);
! vim_free(res_encoding);
! #ifdef FEAT_MBYTE
! vim_free(res_cidfont);
! vim_free(res_cmap);
! #endif
!
! return retval;
}
void
*** ../vim-7.3.160/src/quickfix.c 2010-12-02 15:33:10.000000000 +0100
--- src/quickfix.c 2011-04-11 17:54:07.000000000 +0200
***************
*** 3049,3056 ****
int flags = 0;
colnr_T col;
long tomatch;
! char_u dirname_start[MAXPATHL];
! char_u dirname_now[MAXPATHL];
char_u *target_dir = NULL;
#ifdef FEAT_AUTOCMD
char_u *au_name = NULL;
--- 3049,3056 ----
int flags = 0;
colnr_T col;
long tomatch;
! char_u *dirname_start = NULL;
! char_u *dirname_now = NULL;
char_u *target_dir = NULL;
#ifdef FEAT_AUTOCMD
char_u *au_name = NULL;
***************
*** 3128,3133 ****
--- 3128,3138 ----
goto theend;
}
+ dirname_start = alloc(MAXPATHL);
+ dirname_now = alloc(MAXPATHL);
+ if (dirname_start == NULL || dirname_now == NULL)
+ goto theend;
+
/* Remember the current directory, because a BufRead autocommand that does
* ":lcd %:p:h" changes the meaning of short path names. */
mch_dirname(dirname_start, MAXPATHL);
***************
*** 3364,3369 ****
--- 3369,3376 ----
}
theend:
+ vim_free(dirname_now);
+ vim_free(dirname_start);
vim_free(target_dir);
vim_free(regmatch.regprog);
}
*** ../vim-7.3.160/src/main.c 2011-03-22 18:10:34.000000000 +0100
--- src/main.c 2011-04-11 18:06:06.000000000 +0200
***************
*** 3814,3820 ****
int i;
char_u *inicmd = NULL;
char_u *p;
! char_u cwd[MAXPATHL];
if (filec > 0 && filev[0][0] == '+')
{
--- 3814,3820 ----
int i;
char_u *inicmd = NULL;
char_u *p;
! char_u *cwd;
if (filec > 0 && filev[0][0] == '+')
{
***************
*** 3827,3841 ****
mainerr_arg_missing((char_u *)filev[-1]);
/* Temporarily cd to the current directory to handle relative file names. */
if (mch_dirname(cwd, MAXPATHL) != OK)
return NULL;
! if ((p = vim_strsave_escaped_ext(cwd,
#ifdef BACKSLASH_IN_FILENAME
"", /* rem_backslash() will tell what chars to escape */
#else
PATH_ESC_CHARS,
#endif
! '\\', TRUE)) == NULL)
return NULL;
ga_init2(&ga, 1, 100);
ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd ");
--- 3827,3849 ----
mainerr_arg_missing((char_u *)filev[-1]);
/* Temporarily cd to the current directory to handle relative file names. */
+ cwd = alloc(MAXPATHL);
+ if (cwd == NULL)
+ return NULL;
if (mch_dirname(cwd, MAXPATHL) != OK)
+ {
+ vim_free(cwd);
return NULL;
! }
! p = vim_strsave_escaped_ext(cwd,
#ifdef BACKSLASH_IN_FILENAME
"", /* rem_backslash() will tell what chars to escape */
#else
PATH_ESC_CHARS,
#endif
! '\\', TRUE);
! vim_free(cwd);
! if (p == NULL)
return NULL;
ga_init2(&ga, 1, 100);
ga_concat(&ga, (char_u *)"<C-\\><C-N>:cd ");
*** ../vim-7.3.160/src/netbeans.c 2011-04-11 16:56:29.000000000 +0200
--- src/netbeans.c 2011-04-11 18:27:08.000000000 +0200
***************
*** 2891,2897 ****
char_u *text;
linenr_T lnum;
int col;
! char buf[MAXPATHL * 2 + 25];
char_u *p;
/* Don't do anything when 'ballooneval' is off, messages scrolled the
--- 2891,2897 ----
char_u *text;
linenr_T lnum;
int col;
! char *buf;
char_u *p;
/* Don't do anything when 'ballooneval' is off, messages scrolled the
***************
*** 2905,2919 ****
* length. */
if (text != NULL && text[0] != NUL && STRLEN(text) < MAXPATHL)
{
! p = nb_quote(text);
! if (p != NULL)
{
! vim_snprintf(buf, sizeof(buf),
! "0:balloonText=%d \"%s\"\n", r_cmdno, p);
! vim_free(p);
}
- nbdebug(("EVT: %s", buf));
- nb_send(buf, "netbeans_beval_cb");
}
vim_free(text);
}
--- 2905,2924 ----
* length. */
if (text != NULL && text[0] != NUL && STRLEN(text) < MAXPATHL)
{
! buf = (char *)alloc(MAXPATHL * 2 + 25);
! if (buf != NULL)
{
! p = nb_quote(text);
! if (p != NULL)
! {
! vim_snprintf(buf, MAXPATHL * 2 + 25,
! "0:balloonText=%d \"%s\"\n", r_cmdno, p);
! vim_free(p);
! }
! nbdebug(("EVT: %s", buf));
! nb_send(buf, "netbeans_beval_cb");
! vim_free(buf);
}
}
vim_free(text);
}
*** ../vim-7.3.160/src/spell.c 2011-04-11 16:56:29.000000000 +0200
--- src/spell.c 2011-04-11 18:00:49.000000000 +0200
***************
*** 8590,8596 ****
spellinfo_T *spin;
char_u *wfname;
{
! char_u fname[MAXPATHL];
int len;
slang_T *slang;
int free_slang = FALSE;
--- 8590,8596 ----
spellinfo_T *spin;
char_u *wfname;
{
! char_u *fname = NULL;
int len;
slang_T *slang;
int free_slang = FALSE;
***************
*** 8654,8659 ****
--- 8654,8662 ----
* Write the .sug file.
* Make the file name by changing ".spl" to ".sug".
*/
+ fname = alloc(MAXPATHL);
+ if (fname == NULL)
+ goto theend;
vim_strncpy(fname, wfname, MAXPATHL - 1);
len = (int)STRLEN(fname);
fname[len - 2] = 'u';
***************
*** 8661,8666 ****
--- 8664,8670 ----
sug_write(spin, fname);
theend:
+ vim_free(fname);
if (free_slang)
slang_free(slang);
free_blocks(spin->si_blocks);
***************
*** 9106,9113 ****
int overwrite; /* overwrite existing output file */
int added_word; /* invoked through "zg" */
{
! char_u fname[MAXPATHL];
! char_u wfname[MAXPATHL];
char_u **innames;
int incount;
afffile_T *(afile[8]);
--- 9110,9117 ----
int overwrite; /* overwrite existing output file */
int added_word; /* invoked through "zg" */
{
! char_u *fname = NULL;
! char_u *wfname;
char_u **innames;
int incount;
afffile_T *(afile[8]);
***************
*** 9135,9140 ****
--- 9139,9148 ----
innames = &fnames[1];
incount = fcount - 1;
+ wfname = alloc(MAXPATHL);
+ if (wfname == NULL)
+ return;
+
if (fcount >= 1)
{
len = (int)STRLEN(fnames[0]);
***************
*** 9144,9167 ****
* "path/en.latin1.add.spl". */
innames = &fnames[0];
incount = 1;
! vim_snprintf((char *)wfname, sizeof(wfname), "%s.spl", fnames[0]);
}
else if (fcount == 1)
{
/* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */
innames = &fnames[0];
incount = 1;
! vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL,
fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
}
else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0)
{
/* Name ends in ".spl", use as the file name. */
! vim_strncpy(wfname, fnames[0], sizeof(wfname) - 1);
}
else
/* Name should be language, make the file name from it. */
! vim_snprintf((char *)wfname, sizeof(wfname), SPL_FNAME_TMPL,
fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
/* Check for .ascii.spl. */
--- 9152,9175 ----
* "path/en.latin1.add.spl". */
innames = &fnames[0];
incount = 1;
! vim_snprintf((char *)wfname, MAXPATHL, "%s.spl", fnames[0]);
}
else if (fcount == 1)
{
/* For ":mkspell path/vim" output file is "path/vim.latin1.spl". */
innames = &fnames[0];
incount = 1;
! vim_snprintf((char *)wfname, MAXPATHL, SPL_FNAME_TMPL,
fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
}
else if (len > 4 && STRCMP(fnames[0] + len - 4, ".spl") == 0)
{
/* Name ends in ".spl", use as the file name. */
! vim_strncpy(wfname, fnames[0], MAXPATHL - 1);
}
else
/* Name should be language, make the file name from it. */
! vim_snprintf((char *)wfname, MAXPATHL, SPL_FNAME_TMPL,
fnames[0], spin.si_ascii ? (char_u *)"ascii" : spell_enc());
/* Check for .ascii.spl. */
***************
*** 9186,9199 ****
if (!overwrite && mch_stat((char *)wfname, &st) >= 0)
{
EMSG(_(e_exists));
! return;
}
if (mch_isdir(wfname))
{
EMSG2(_(e_isadir2), wfname);
! return;
}
/*
* Init the aff and dic pointers.
* Get the region names if there are more than 2 arguments.
--- 9194,9211 ----
if (!overwrite && mch_stat((char *)wfname, &st) >= 0)
{
EMSG(_(e_exists));
! goto theend;
}
if (mch_isdir(wfname))
{
EMSG2(_(e_isadir2), wfname);
! goto theend;
}
+ fname = alloc(MAXPATHL);
+ if (fname == NULL)
+ goto theend;
+
/*
* Init the aff and dic pointers.
* Get the region names if there are more than 2 arguments.
***************
*** 9209,9215 ****
|| innames[i][len - 3] != '_')
{
EMSG2(_("E755: Invalid region in %s"), innames[i]);
! return;
}
spin.si_region_name[i * 2] = TOLOWER_ASC(innames[i][len - 2]);
spin.si_region_name[i * 2 + 1] =
--- 9221,9227 ----
|| innames[i][len - 3] != '_')
{
EMSG2(_("E755: Invalid region in %s"), innames[i]);
! goto theend;
}
spin.si_region_name[i * 2] = TOLOWER_ASC(innames[i][len - 2]);
spin.si_region_name[i * 2 + 1] =
***************
*** 9226,9232 ****
|| spin.si_prefroot == NULL)
{
free_blocks(spin.si_blocks);
! return;
}
/* When not producing a .add.spl file clear the character table when
--- 9238,9244 ----
|| spin.si_prefroot == NULL)
{
free_blocks(spin.si_blocks);
! goto theend;
}
/* When not producing a .add.spl file clear the character table when
***************
*** 9247,9253 ****
spin.si_conv.vc_type = CONV_NONE;
spin.si_region = 1 << i;
! vim_snprintf((char *)fname, sizeof(fname), "%s.aff", innames[i]);
if (mch_stat((char *)fname, &st) >= 0)
{
/* Read the .aff file. Will init "spin->si_conv" based on the
--- 9259,9265 ----
spin.si_conv.vc_type = CONV_NONE;
spin.si_region = 1 << i;
! vim_snprintf((char *)fname, MAXPATHL, "%s.aff", innames[i]);
if (mch_stat((char *)fname, &st) >= 0)
{
/* Read the .aff file. Will init "spin->si_conv" based on the
***************
*** 9258,9264 ****
else
{
/* Read the .dic file and store the words in the trees. */
! vim_snprintf((char *)fname, sizeof(fname), "%s.dic",
innames[i]);
if (spell_read_dic(&spin, fname, afile[i]) == FAIL)
error = TRUE;
--- 9270,9276 ----
else
{
/* Read the .dic file and store the words in the trees. */
! vim_snprintf((char *)fname, MAXPATHL, "%s.dic",
innames[i]);
if (spell_read_dic(&spin, fname, afile[i]) == FAIL)
error = TRUE;
***************
*** 9340,9345 ****
--- 9352,9361 ----
spell_make_sugfile(&spin, wfname);
}
+
+ theend:
+ vim_free(fname);
+ vim_free(wfname);
}
/*
***************
*** 9392,9398 ****
buf_T *buf = NULL;
int new_spf = FALSE;
char_u *fname;
! char_u fnamebuf[MAXPATHL];
char_u line[MAXWLEN * 2];
long fpos, fpos_next = 0;
int i;
--- 9408,9414 ----
buf_T *buf = NULL;
int new_spf = FALSE;
char_u *fname;
! char_u *fnamebuf = NULL;
char_u line[MAXWLEN * 2];
long fpos, fpos_next = 0;
int i;
***************
*** 9422,9427 ****
--- 9438,9446 ----
EMSG2(_(e_notset), "spellfile");
return;
}
+ fnamebuf = alloc(MAXPATHL);
+ if (fnamebuf == NULL)
+ return;
for (spf = curwin->w_s->b_p_spf, i = 1; *spf != NUL; ++i)
{
***************
*** 9431,9436 ****
--- 9450,9456 ----
if (*spf == NUL)
{
EMSGN(_("E765: 'spellfile' does not have %ld entries"), idx);
+ vim_free(fnamebuf);
return;
}
}
***************
*** 9442,9447 ****
--- 9462,9468 ----
if (buf != NULL && bufIsChanged(buf))
{
EMSG(_(e_bufloaded));
+ vim_free(fnamebuf);
return;
}
***************
*** 9536,9541 ****
--- 9557,9563 ----
redraw_all_later(SOME_VALID);
}
+ vim_free(fnamebuf);
}
/*
***************
*** 9544,9550 ****
static void
init_spellfile()
{
! char_u buf[MAXPATHL];
int l;
char_u *fname;
char_u *rtp;
--- 9566,9572 ----
static void
init_spellfile()
{
! char_u *buf;
int l;
char_u *fname;
char_u *rtp;
***************
*** 9554,9559 ****
--- 9576,9585 ----
if (*curwin->w_s->b_p_spl != NUL && curwin->w_s->b_langp.ga_len > 0)
{
+ buf = alloc(MAXPATHL);
+ if (buf == NULL)
+ return;
+
/* Find the end of the language name. Exclude the region. If there
* is a path separator remember the start of the tail. */
for (lend = curwin->w_s->b_p_spl; *lend != NUL
***************
*** 9597,9603 ****
"/%.*s", (int)(lend - lstart), lstart);
}
l = (int)STRLEN(buf);
! fname = LANGP_ENTRY(curwin->w_s->b_langp, 0)->lp_slang->sl_fname;
vim_snprintf((char *)buf + l, MAXPATHL - l, ".%s.add",
fname != NULL
&& strstr((char *)gettail(fname), ".ascii.") != NULL
--- 9623,9630 ----
"/%.*s", (int)(lend - lstart), lstart);
}
l = (int)STRLEN(buf);
! fname = LANGP_ENTRY(curwin->w_s->b_langp, 0)
! ->lp_slang->sl_fname;
vim_snprintf((char *)buf + l, MAXPATHL - l, ".%s.add",
fname != NULL
&& strstr((char *)gettail(fname), ".ascii.") != NULL
***************
*** 9607,9612 ****
--- 9634,9641 ----
}
aspath = FALSE;
}
+
+ vim_free(buf);
}
}
*** ../vim-7.3.160/src/tag.c 2011-04-11 16:56:29.000000000 +0200
--- src/tag.c 2011-04-11 20:54:36.000000000 +0200
***************
*** 775,791 ****
{
list_T *list;
char_u tag_name[128 + 1];
! char_u fname[MAXPATHL + 1];
! char_u cmd[CMDBUFFSIZE + 1];
/*
* Add the matching tags to the location list for the current
* window.
*/
list = list_alloc();
! if (list == NULL)
goto end_do_tag;
for (i = 0; i < num_matches; ++i)
{
--- 775,799 ----
{
list_T *list;
char_u tag_name[128 + 1];
! char_u *fname;
! char_u *cmd;
/*
* Add the matching tags to the location list for the current
* window.
*/
+ fname = alloc(MAXPATHL + 1);
+ cmd = alloc(CMDBUFFSIZE + 1);
list = list_alloc();
! if (list == NULL || fname == NULL || cmd == NULL)
! {
! vim_free(cmd);
! vim_free(fname);
! if (list != NULL)
! list_free(list, TRUE);
goto end_do_tag;
+ }
for (i = 0; i < num_matches; ++i)
{
***************
*** 911,916 ****
--- 919,926 ----
set_errorlist(curwin, list, ' ', IObuff);
list_free(list, TRUE);
+ vim_free(fname);
+ vim_free(cmd);
cur_match = 0; /* Jump to the first tag */
}
***************
*** 3777,3784 ****
char_u *start; /* start of the value */
char_u *end; /* after the value; can be NULL */
{
! char_u buf[MAXPATHL];
int len = 0;
/* check that the field name doesn't exist yet */
if (dict_find(dict, (char_u *)field_name, -1) != NULL)
--- 3787,3795 ----
char_u *start; /* start of the value */
char_u *end; /* after the value; can be NULL */
{
! char_u *buf;
int len = 0;
+ int retval;
/* check that the field name doesn't exist yet */
if (dict_find(dict, (char_u *)field_name, -1) != NULL)
***************
*** 3791,3796 ****
--- 3802,3810 ----
}
return FAIL;
}
+ buf = alloc(MAXPATHL);
+ if (buf == NULL)
+ return FAIL;
if (start != NULL)
{
if (end == NULL)
***************
*** 3800,3811 ****
--end;
}
len = (int)(end - start);
! if (len > (int)sizeof(buf) - 1)
! len = sizeof(buf) - 1;
vim_strncpy(buf, start, len);
}
buf[len] = NUL;
! return dict_add_nr_str(dict, field_name, 0L, buf);
}
/*
--- 3814,3827 ----
--end;
}
len = (int)(end - start);
! if (len > MAXPATHL - 1)
! len = MAXPATHL - 1;
vim_strncpy(buf, start, len);
}
buf[len] = NUL;
! retval = dict_add_nr_str(dict, field_name, 0L, buf);
! vim_free(buf);
! return retval;
}
/*
*** ../vim-7.3.160/src/vim.h 2010-12-30 12:30:26.000000000 +0100
--- src/vim.h 2011-04-11 20:50:54.000000000 +0200
***************
*** 1435,1440 ****
--- 1435,1442 ----
#define IOSIZE (1024+1) /* file i/o and sprintf buffer size */
+ #define DIALOG_MSG_SIZE 1000 /* buffer size for dialog_msg() */
+
#ifdef FEAT_MBYTE
# define MSG_BUF_LEN 480 /* length of buffer for small messages */
# define MSG_BUF_CLEN (MSG_BUF_LEN / 6) /* cell length (worst case: utf-8
*** ../vim-7.3.160/src/xxd/xxd.c 2011-04-02 14:44:50.000000000 +0200
--- src/xxd/xxd.c 2011-04-11 16:40:48.000000000 +0200
***************
*** 476,482 ****
int octspergrp = -1; /* number of octets grouped in output */
int grplen; /* total chars per octet group */
long length = -1, n = 0, seekoff = 0;
! char l[LLEN+1];
char *pp;
#ifdef AMIGA
--- 476,482 ----
int octspergrp = -1; /* number of octets grouped in output */
int grplen; /* total chars per octet group */
long length = -1, n = 0, seekoff = 0;
! static char l[LLEN+1]; /* static because it may be too big for stack */
char *pp;
#ifdef AMIGA
*** ../vim-7.3.160/src/version.c 2011-04-11 16:56:29.000000000 +0200
--- src/version.c 2011-04-11 21:15:33.000000000 +0200
***************
*** 716,717 ****
--- 716,719 ----
{ /* Add new patch number below this line */
+ /**/
+ 161,
/**/
--
The process for understanding customers primarily involves sitting around with
other marketing people and talking about what you would to if you were dumb
enough to be a customer.
(Scott Adams - The Dilbert principle)
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///