From 9a8ace4dd27eb7405ca5e4d1b41de88e96545490 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 21 Oct 2012 03:46:05 +0200 Subject: [PATCH] updated for version 7.3.703 Problem: When 'undofile' is reset the hash is computed unnecessarily. Solution: Only compute the hash when the option was set. (Christian Brabandt) --- src/option.c | 34 ++++++++++++++++++++-------------- src/version.c | 2 ++ 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/option.c b/src/option.c index da9807156d..2ab077063b 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 14d4c8f787..e3f960132d 100644 --- a/src/version.c +++ b/src/version.c @@ -719,6 +719,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 703, /**/ 702, /**/