updated for version 7.0044
diff --git a/src/buffer.c b/src/buffer.c
index 4579a64..dc28caf 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -608,7 +608,8 @@
 	free_buf_options(buf, TRUE);
     }
 #ifdef FEAT_EVAL
-    vars_clear(&buf->b_vars);		/* free all internal variables */
+    vars_clear(&buf->b_vars.dv_hashtab); /* free all internal variables */
+    hash_init(&buf->b_vars.dv_hashtab);
 #endif
 #ifdef FEAT_USR_CMDS
     uc_clear(&buf->b_ucmds);		/* clear local user commands */
@@ -1626,7 +1627,11 @@
     buf->b_wininfo->wi_win = curwin;
 
 #ifdef FEAT_EVAL
-    vars_init(&buf->b_vars);		/* init internal variables */
+    init_var_dict(&buf->b_vars, &buf->b_bufvar);    /* init b: variables */
+#endif
+#ifdef FEAT_SYN_HL
+    hash_init(&buf->b_keywtab);
+    hash_init(&buf->b_keywtab_ic);
 #endif
 
     buf->b_fname = buf->b_sfname;
diff --git a/src/window.c b/src/window.c
index 7c88dc8..ec9c39e 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3090,7 +3090,8 @@
 	}
 #endif
 #ifdef FEAT_EVAL
-	vars_init(&newwin->w_vars);	    /* init internal variables */
+	/* init w: variables */
+	init_var_dict(&newwin->w_vars, &newwin->w_winvar);
 #endif
 #ifdef FEAT_FOLDING
 	foldInitWin(newwin);
@@ -3134,7 +3135,7 @@
     clear_winopt(&wp->w_allbuf_opt);
 
 #ifdef FEAT_EVAL
-    vars_clear(&wp->w_vars);	    /* free all internal variables */
+    vars_clear(&wp->w_vars.dv_hashtab);	    /* free all w: variables */
 #endif
 
     if (prevwin == wp)