]> granicus.if.org Git - vim/commitdiff
patch 7.4.2272 v7.4.2272
authorBram Moolenaar <Bram@vim.org>
Sat, 27 Aug 2016 18:34:01 +0000 (20:34 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 27 Aug 2016 18:34:01 +0000 (20:34 +0200)
Problem:    getbufinfo(), getwininfo() and gettabinfo() are inefficient.
Solution:   Instead of making a copy of the variables dictionary, use a
            reference.

src/evalfunc.c
src/version.c

index 88392305e1f89cab8ee5ffab1406a0c089fbeedf..1a2ea8621c154cbd2871a44ec07c57c3f04f6733 100644 (file)
@@ -3922,7 +3922,6 @@ get_buffer_info(buf_T *buf)
 {
     dict_T     *dict;
     dict_T     *opts;
-    dict_T     *vars;
     tabpage_T  *tp;
     win_T      *wp;
     list_T     *windows;
@@ -3943,10 +3942,8 @@ get_buffer_info(buf_T *buf)
                    buf->b_ml.ml_mfp != NULL && buf->b_nwindows == 0,
                    NULL);
 
-    /* Copy buffer variables */
-    vars = dict_copy(buf->b_vars, TRUE, 0);
-    if (vars != NULL)
-       dict_add_dict(dict, "variables", vars);
+    /* Get a reference to buffer variables */
+    dict_add_dict(dict, "variables", buf->b_vars);
 
     /* Copy buffer options */
     opts = get_winbuf_options(TRUE);
@@ -4994,7 +4991,6 @@ get_tabpage_info(tabpage_T *tp, int tp_idx)
 {
     win_T      *wp;
     dict_T     *dict;
-    dict_T     *vars;
     list_T     *l;
 
     dict = dict_alloc();
@@ -5012,10 +5008,8 @@ get_tabpage_info(tabpage_T *tp, int tp_idx)
        dict_add_list(dict, "windows", l);
     }
 
-    /* Copy tabpage variables */
-    vars = dict_copy(tp->tp_vars, TRUE, 0);
-    if (vars != NULL)
-       dict_add_dict(dict, "variables", vars);
+    /* Make a reference to tabpage variables */
+    dict_add_dict(dict, "variables", tp->tp_vars);
 
     return dict;
 }
@@ -5118,7 +5112,6 @@ f_gettabwinvar(typval_T *argvars, typval_T *rettv)
 get_win_info(win_T *wp, short tpnr, short winnr)
 {
     dict_T     *dict;
-    dict_T     *vars;
     dict_T     *opts;
 
     dict = dict_alloc();
@@ -5138,10 +5131,8 @@ get_win_info(win_T *wp, short tpnr, short winnr)
            (bt_quickfix(wp->w_buffer) && wp->w_llist_ref != NULL), NULL);
 #endif
 
-    /* Copy window variables */
-    vars = dict_copy(wp->w_vars, TRUE, 0);
-    if (vars != NULL)
-       dict_add_dict(dict, "variables", vars);
+    /* Make a reference to window variables */
+    dict_add_dict(dict, "variables", wp->w_vars);
 
     /* Copy window options */
     opts = get_winbuf_options(FALSE);
index 2384d4d42451778eab4cb99e90885f452a9ba392..8f435dba3935d0355bf2c79f30febb83b150d15d 100644 (file)
@@ -763,6 +763,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2272,
 /**/
     2271,
 /**/