diff options
author | Bram Moolenaar <bram@vim.org> | 2012-04-30 17:35:48 +0200 |
---|---|---|
committer | Bram Moolenaar <bram@vim.org> | 2012-04-30 17:35:48 +0200 |
commit | 64809acaa65e6da4269f8601c9037d28af54b631 (patch) | |
tree | 2656d04ce79b4bcd800d16571112e26f0a5a93ae | |
parent | b8b1464bd383356a4d83d94b123d1e427c0e7604 (diff) | |
download | vim-64809acaa65e6da4269f8601c9037d28af54b631.tar.gz |
Problem: undofile() returns a useless name when passed an empty string.
Solution: Return an empty string. (Christian Brabandt)
-rw-r--r-- | src/eval.c | 18 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 16 insertions, 4 deletions
@@ -18259,11 +18259,21 @@ f_undofile(argvars, rettv) rettv->v_type = VAR_STRING; #ifdef FEAT_PERSISTENT_UNDO { - char_u *ffname = FullName_save(get_tv_string(&argvars[0]), FALSE); + char_u *fname = get_tv_string(&argvars[0]); - if (ffname != NULL) - rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE); - vim_free(ffname); + if (*fname == NUL) + { + /* If there is no file name there will be no undo file. */ + rettv->vval.v_string = NULL; + } + else + { + char_u *ffname = FullName_save(fname, FALSE); + + if (ffname != NULL) + rettv->vval.v_string = u_get_undo_file_name(ffname, FALSE); + vim_free(ffname); + } } #else rettv->vval.v_string = NULL; diff --git a/src/version.c b/src/version.c index b2f9a986..ce22d9f9 100644 --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 512, +/**/ 511, /**/ 510, |