]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
updated for version 7.3.703 v7.3.703
authorBram Moolenaar <Bram@vim.org>
Sun, 21 Oct 2012 01:46:05 +0000 (03:46 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 21 Oct 2012 01:46:05 +0000 (03:46 +0200)
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
src/version.c

index da9807156d4e0c70e80035b179e632da1ab6e931..2ab077063b5da1255b25b85c8ef98b4f44bcc90b 100644 (file)
@@ -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
 
index 14d4c8f7870f178ffc27ce4d3118c971ce7beeb2..e3f960132d20cf482828667827ef4a5904cbc690 100644 (file)
@@ -719,6 +719,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    703,
 /**/
     702,
 /**/