summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.3.161
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.3.161')
-rw-r--r--source/ap/vim/patches/7.3.1611645
1 files changed, 1645 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.161 b/source/ap/vim/patches/7.3.161
new file mode 100644
index 000000000..61223ec2b
--- /dev/null
+++ b/source/ap/vim/patches/7.3.161
@@ -0,0 +1,1645 @@
+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 ///