comparison src/eval.c @ 2770:25672ad7f377 v7.3.161

updated for version 7.3.161 Problem: Items on the stack may be too big. Solution: Make items static or allocate them.
author Bram Moolenaar <bram@vim.org>
date Mon, 11 Apr 2011 21:35:11 +0200
parents 5747cd65d62b
children 18ad854f5dcd
comparison
equal deleted inserted replaced
2769:ccce1db172b3 2770:25672ad7f377
11098 static void 11098 static void
11099 f_getcwd(argvars, rettv) 11099 f_getcwd(argvars, rettv)
11100 typval_T *argvars UNUSED; 11100 typval_T *argvars UNUSED;
11101 typval_T *rettv; 11101 typval_T *rettv;
11102 { 11102 {
11103 char_u cwd[MAXPATHL]; 11103 char_u *cwd;
11104 11104
11105 rettv->v_type = VAR_STRING; 11105 rettv->v_type = VAR_STRING;
11106 if (mch_dirname(cwd, MAXPATHL) == FAIL) 11106 rettv->vval.v_string = NULL;
11107 rettv->vval.v_string = NULL; 11107 cwd = alloc(MAXPATHL);
11108 else 11108 if (cwd != NULL)
11109 { 11109 {
11110 rettv->vval.v_string = vim_strsave(cwd); 11110 if (mch_dirname(cwd, MAXPATHL) != FAIL)
11111 {
11112 rettv->vval.v_string = vim_strsave(cwd);
11111 #ifdef BACKSLASH_IN_FILENAME 11113 #ifdef BACKSLASH_IN_FILENAME
11112 if (rettv->vval.v_string != NULL) 11114 if (rettv->vval.v_string != NULL)
11113 slash_adjust(rettv->vval.v_string); 11115 slash_adjust(rettv->vval.v_string);
11114 #endif 11116 #endif
11117 }
11118 vim_free(cwd);
11115 } 11119 }
11116 } 11120 }
11117 11121
11118 /* 11122 /*
11119 * "getfontname()" function 11123 * "getfontname()" function
14936 f_resolve(argvars, rettv) 14940 f_resolve(argvars, rettv)
14937 typval_T *argvars; 14941 typval_T *argvars;
14938 typval_T *rettv; 14942 typval_T *rettv;
14939 { 14943 {
14940 char_u *p; 14944 char_u *p;
14945 #ifdef HAVE_READLINK
14946 char_u *buf = NULL;
14947 #endif
14941 14948
14942 p = get_tv_string(&argvars[0]); 14949 p = get_tv_string(&argvars[0]);
14943 #ifdef FEAT_SHORTCUT 14950 #ifdef FEAT_SHORTCUT
14944 { 14951 {
14945 char_u *v = NULL; 14952 char_u *v = NULL;
14951 rettv->vval.v_string = vim_strsave(p); 14958 rettv->vval.v_string = vim_strsave(p);
14952 } 14959 }
14953 #else 14960 #else
14954 # ifdef HAVE_READLINK 14961 # ifdef HAVE_READLINK
14955 { 14962 {
14956 char_u buf[MAXPATHL + 1];
14957 char_u *cpy; 14963 char_u *cpy;
14958 int len; 14964 int len;
14959 char_u *remain = NULL; 14965 char_u *remain = NULL;
14960 char_u *q; 14966 char_u *q;
14961 int is_relative_to_current = FALSE; 14967 int is_relative_to_current = FALSE;
14978 /* Separate the first path component in "p", and keep the 14984 /* Separate the first path component in "p", and keep the
14979 * remainder (beginning with the path separator). */ 14985 * remainder (beginning with the path separator). */
14980 remain = vim_strsave(q - 1); 14986 remain = vim_strsave(q - 1);
14981 q[-1] = NUL; 14987 q[-1] = NUL;
14982 } 14988 }
14989
14990 buf = alloc(MAXPATHL + 1);
14991 if (buf == NULL)
14992 goto fail;
14983 14993
14984 for (;;) 14994 for (;;)
14985 { 14995 {
14986 for (;;) 14996 for (;;)
14987 { 14997 {
15122 15132
15123 simplify_filename(rettv->vval.v_string); 15133 simplify_filename(rettv->vval.v_string);
15124 15134
15125 #ifdef HAVE_READLINK 15135 #ifdef HAVE_READLINK
15126 fail: 15136 fail:
15137 vim_free(buf);
15127 #endif 15138 #endif
15128 rettv->v_type = VAR_STRING; 15139 rettv->v_type = VAR_STRING;
15129 } 15140 }
15130 15141
15131 /* 15142 /*
17602 static void 17613 static void
17603 f_tagfiles(argvars, rettv) 17614 f_tagfiles(argvars, rettv)
17604 typval_T *argvars UNUSED; 17615 typval_T *argvars UNUSED;
17605 typval_T *rettv; 17616 typval_T *rettv;
17606 { 17617 {
17607 char_u fname[MAXPATHL + 1]; 17618 char_u *fname;
17608 tagname_T tn; 17619 tagname_T tn;
17609 int first; 17620 int first;
17610 17621
17611 if (rettv_list_alloc(rettv) == FAIL) 17622 if (rettv_list_alloc(rettv) == FAIL)
17623 return;
17624 fname = alloc(MAXPATHL);
17625 if (fname == NULL)
17612 return; 17626 return;
17613 17627
17614 for (first = TRUE; ; first = FALSE) 17628 for (first = TRUE; ; first = FALSE)
17615 if (get_tagfname(&tn, first, fname) == FAIL 17629 if (get_tagfname(&tn, first, fname) == FAIL
17616 || list_append_string(rettv->vval.v_list, fname, -1) == FAIL) 17630 || list_append_string(rettv->vval.v_list, fname, -1) == FAIL)
17617 break; 17631 break;
17618 tagname_free(&tn); 17632 tagname_free(&tn);
17633 vim_free(fname);
17619 } 17634 }
17620 17635
17621 /* 17636 /*
17622 * "taglist()" function 17637 * "taglist()" function
17623 */ 17638 */