diff --git a/src/gui_beval.c b/src/gui_beval.c
index f4309b8..68d30e3 100644
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -107,7 +107,7 @@
 	return NULL;
     }
 
-    beval = (BalloonEval *)alloc_clear(sizeof(BalloonEval));
+    beval = ALLOC_CLEAR_ONE(BalloonEval);
     if (beval != NULL)
     {
 #ifdef FEAT_GUI_GTK
diff --git a/src/list.c b/src/list.c
index e7a4f99..e1aa2d1 100644
--- a/src/list.c
+++ b/src/list.c
@@ -130,7 +130,7 @@
 
 
 /*
- * Set a list as the return value
+ * Set a list as the return value.  Increments the reference count.
  */
     void
 rettv_list_set(typval_T *rettv, list_T *l)
diff --git a/src/menu.c b/src/menu.c
index f32fe49..5cdf501 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -583,7 +583,7 @@
 	    }
 
 	    /* Not already there, so lets add it */
-	    menu = (vimmenu_T *)alloc_clear(sizeof(vimmenu_T));
+	    menu = ALLOC_CLEAR_ONE(vimmenu_T);
 	    if (menu == NULL)
 		goto erret;
 
diff --git a/src/message.c b/src/message.c
index 26a3e3a..c5e73ba 100644
--- a/src/message.c
+++ b/src/message.c
@@ -652,7 +652,7 @@
 		redir_write(s, -1);
 	    }
 #ifdef FEAT_JOB_CHANNEL
-	    ch_log(NULL, "ERROR: %s", (char *)s);
+	    ch_log(NULL, "ERROR silent: %s", (char *)s);
 #endif
 	    return TRUE;
 	}
diff --git a/src/misc2.c b/src/misc2.c
index d1615b1..be9233f 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -1193,9 +1193,7 @@
 	    buf = firstbuf;
     }
 
-# ifdef FEAT_ARABIC
     free_cmdline_buf();
-# endif
 
     /* Clear registers. */
     clear_registers();
diff --git a/src/os_vms_conf.h b/src/os_vms_conf.h
index 6bc6efb..7588cae 100644
--- a/src/os_vms_conf.h
+++ b/src/os_vms_conf.h
@@ -24,7 +24,7 @@
 #define HAVE_DATE_TIME
 
 /* Defined to the size of an int */
-#define VIM_SIZEOF_INT  4 
+#define VIM_SIZEOF_INT  4
 
 /* #undef USEBCOPY */
 #define USEMEMMOVE
diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms
index 88aff09..bb30618 100644
--- a/src/testdir/Make_vms.mms
+++ b/src/testdir/Make_vms.mms
@@ -4,7 +4,7 @@
 # Authors:	Zoltan Arpadffy, <arpadffy@polarhome.com>
 #		Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
 #
-# Last change:  2016 Nov 04
+# Last change:  2019 May 31
 #
 # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
 # Edit the lines in the Configuration section below to select.
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index cdaa941..fa9eb1e 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -1187,11 +1187,10 @@
   quit
 
   call assert_equal(1, winnr('$'))
-  let width = winwidth(0)
   call term_dumpdiff('dumps/Test_popup_command_01.dump', 'dumps/Test_popup_command_02.dump', {'vertical': 0, 'term_rows': 13, 'term_name': 'something else'})
   call assert_equal(2, winnr('$'))
-  call assert_equal(width, winwidth(winnr()))
-  call assert_equal(13, winheight(winnr()))
+  call assert_equal(&columns, winwidth(0))
+  call assert_equal(13, winheight(0))
   call assert_equal('something else', bufname('%'))
   quit
 
diff --git a/src/version.c b/src/version.c
index 258605b..90f8e08 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1630,
+/**/
     1629,
 /**/
     1628,
