summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@vim.org>2012-10-21 03:46:05 +0200
committerBram Moolenaar <bram@vim.org>2012-10-21 03:46:05 +0200
commit748ad2b400485e66b66df854642ed0ffeaa6ab31 (patch)
treed215ba2c6b61aae28d1f4b7901585c132d8b9a00
parent4334487a159ee017239cb9ca145708721be83424 (diff)
downloadvim-748ad2b400485e66b66df854642ed0ffeaa6ab31.tar.gz
updated for version 7.3.703v7.3.703v7-3-703
Problem: When 'undofile' is reset the hash is computed unnecessarily. Solution: Only compute the hash when the option was set. (Christian Brabandt)
-rw-r--r--src/option.c34
-rw-r--r--src/version.c2
2 files changed, 22 insertions, 14 deletions
diff --git a/src/option.c b/src/option.c
index da980715..2ab07706 100644
--- a/src/option.c
+++ b/src/option.c
@@ -7573,24 +7573,30 @@ set_bool_option(opt_idx, varp, value, opt_flags)
/* 'undofile' */
else if ((int *)varp == &curbuf->b_p_udf || (int *)varp == &p_udf)
{
- char_u hash[UNDO_HASH_SIZE];
- buf_T *save_curbuf = curbuf;
-
- for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next)
+ /* Only take action when the option was set. When reset we do not
+ * delete the undo file, the option may be set again without making
+ * any changes in between. */
+ if (curbuf->b_p_udf || p_udf)
{
- /* When 'undofile' is set globally: for every buffer, otherwise
- * only for the current buffer: Try to read in the undofile, if
- * one exists and the buffer wasn't changed and the buffer was
- * loaded. */
- if ((curbuf == save_curbuf
- || (opt_flags & OPT_GLOBAL) || opt_flags == 0)
- && !curbufIsChanged() && curbuf->b_ml.ml_mfp != NULL)
+ char_u hash[UNDO_HASH_SIZE];
+ buf_T *save_curbuf = curbuf;
+
+ for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next)
{
- u_compute_hash(hash);
- u_read_undo(NULL, hash, curbuf->b_fname);
+ /* When 'undofile' is set globally: for every buffer, otherwise
+ * only for the current buffer: Try to read in the undofile,
+ * if one exists, the buffer wasn't changed and the buffer was
+ * loaded */
+ if ((curbuf == save_curbuf
+ || (opt_flags & OPT_GLOBAL) || opt_flags == 0)
+ && !curbufIsChanged() && curbuf->b_ml.ml_mfp != NULL)
+ {
+ u_compute_hash(hash);
+ u_read_undo(NULL, hash, curbuf->b_fname);
+ }
}
+ curbuf = save_curbuf;
}
- curbuf = save_curbuf;
}
#endif
diff --git a/src/version.c b/src/version.c
index 14d4c8f7..e3f96013 100644
--- a/src/version.c
+++ b/src/version.c
@@ -720,6 +720,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 703,
+/**/
702,
/**/
701,