Mercurial > vim
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 */ |