diff --git a/src/gui_motif.c b/src/gui_motif.c
index 6060b58..8285b16 100644
--- a/src/gui_motif.c
+++ b/src/gui_motif.c
@@ -686,8 +686,8 @@
 
     /* Temporarily set value of XmNmappedWhenManaged
        to stop the dialog from popping up right away */
-    XtVaGetValues(shell, XmNmappedWhenManaged, &mappedWhenManaged, 0);
-    XtVaSetValues(shell, XmNmappedWhenManaged, False, 0);
+    XtVaGetValues(shell, XmNmappedWhenManaged, &mappedWhenManaged, NULL);
+    XtVaSetValues(shell, XmNmappedWhenManaged, False, NULL);
 
     XtManageChild(dialog_child);
 
@@ -723,7 +723,7 @@
     XtMapWidget(shell);
 
     /* Restore the value of XmNmappedWhenManaged */
-    XtVaSetValues(shell, XmNmappedWhenManaged, mappedWhenManaged, 0);
+    XtVaSetValues(shell, XmNmappedWhenManaged, mappedWhenManaged, NULL);
 }
 
 #if defined(FEAT_MENU) || defined(FEAT_SUN_WORKSHOP) \
@@ -1993,7 +1993,7 @@
     {
 	if (XtClass(w) == xmRowColumnWidgetClass)
 	{
-	    XtVaGetValues(w, XmNrowColumnType, &rowColType, 0);
+	    XtVaGetValues(w, XmNrowColumnType, &rowColType, NULL);
 	    isMenu = (rowColType != (unsigned char)XmWORK_AREA);
 	}
 	else
@@ -2001,14 +2001,14 @@
 	if (!isMenu)
 	{
 	    XtVaGetValues(w, XmNchildren, &children, XmNnumChildren,
-			  &numChildren, 0);
+			  &numChildren, NULL);
 	    for (i = 0; i < numChildren; i++)
 		do_mnemonic(children[i], keycode);
 	}
     }
     else
     {
-	XtVaGetValues(w, XmNmnemonic, &mnemonic, 0);
+	XtVaGetValues(w, XmNmnemonic, &mnemonic, NULL);
 	if (mnemonic != '\0')
 	{
 	    mneString[0] = mnemonic;
@@ -2019,7 +2019,7 @@
 		if (XtClass(w) == xmLabelWidgetClass
 			|| XtClass(w) == xmLabelGadgetClass)
 		{
-		    XtVaGetValues(w, XmNuserData, &userData, 0);
+		    XtVaGetValues(w, XmNuserData, &userData, NULL);
 		    if (userData != NULL && XtIsWidget(userData))
 			XmProcessTraversal(userData, XmTRAVERSE_CURRENT);
 		}
@@ -2073,7 +2073,7 @@
     {
 	if (XtClass(w) == xmRowColumnWidgetClass)
 	{
-	    XtVaGetValues(w, XmNrowColumnType, &rowColType, 0);
+	    XtVaGetValues(w, XmNrowColumnType, &rowColType, NULL);
 	    isMenu = (rowColType != (unsigned char)XmWORK_AREA);
 	}
 	else
@@ -2081,14 +2081,14 @@
 	if (!isMenu)
 	{
 	    XtVaGetValues(w, XmNchildren, &children, XmNnumChildren,
-							     &numChildren, 0);
+							  &numChildren, NULL);
 	    for (i = 0; i < numChildren; i++)
 		add_mnemonic_grabs(dialog, children[i]);
 	}
     }
     else
     {
-	XtVaGetValues(w, XmNmnemonic, &mnemonic, 0);
+	XtVaGetValues(w, XmNmnemonic, &mnemonic, NULL);
 	if (mnemonic != '\0')
 	{
 	    mneString[0] = mnemonic;
diff --git a/src/testdir/test65.in b/src/testdir/test65.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/testdir/test65.in
diff --git a/src/testdir/test65.ok b/src/testdir/test65.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/testdir/test65.ok
diff --git a/src/version.c b/src/version.c
index fbde4b4..508d847 100644
--- a/src/version.c
+++ b/src/version.c
@@ -667,6 +667,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    317,
+/**/
     316,
 /**/
     315,
