| 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 |
| |
| |
| |
| |
| |
| *** 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); |
| } |
| |
| /* |
| |
| |
| |
| *** 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?"), |
| |
| |
| |
| *** 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; |
| |
| |
| |
| |
| *** 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 |
| |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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); |
| } |
| |
| |
| |
| *** 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 "); |
| |
| |
| |
| *** 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); |
| } |
| |
| |
| |
| *** 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); |
| } |
| } |
| |
| |
| |
| |
| *** 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; |
| } |
| |
| /* |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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 |
| |
| |
| |
| *** 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 /// |