Treat an empty kwdict argument the same as a missing one.
diff --git a/Mac/Modules/Nav.c b/Mac/Modules/Nav.c
index d8ef6ef..934dc87 100644
--- a/Mac/Modules/Nav.c
+++ b/Mac/Modules/Nav.c
@@ -437,8 +437,8 @@
 	NavTypeListHandle typeList = NULL;
 	OSErr err;
 
-	if ( kw ) {
-		if (!PyArg_ParseTuple(args, ""))
+	if ( kw && PyObject_IsTrue(kw) ) {
+		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
 			return NULL;
 		dict = kw;
 	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
@@ -474,8 +474,8 @@
 	OSType fileCreator;
 	OSErr err;
 
-	if ( kw ) {
-		if (!PyArg_ParseTuple(args, ""))
+	if ( kw && PyObject_IsTrue(kw) ) {
+		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
 			return NULL;
 		dict = kw;
 	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
@@ -510,7 +510,7 @@
 	NavEventUPP eventProc = NULL;
 	OSErr err;
 
-	if ( kw ) {
+	if ( kw && PyObject_IsTrue(kw) ) {
 		if (!PyArg_ParseTuple(args, "l", &action))
 			return NULL;
 		dict = kw;
@@ -542,8 +542,8 @@
 	NavEventUPP eventProc = NULL;
 	OSErr err;
 
-	if ( kw ) {
-		if (!PyArg_ParseTuple(args, ""))
+	if ( kw && PyObject_IsTrue(kw) ) {
+		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
 			return NULL;
 		dict = kw;
 	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
@@ -574,8 +574,8 @@
 	NavEventUPP eventProc = NULL;
 	OSErr err;
 
-	if ( kw ) {
-		if (!PyArg_ParseTuple(args, ""))
+	if ( kw && PyObject_IsTrue(kw) ) {
+		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
 			return NULL;
 		dict = kw;
 	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
@@ -610,8 +610,8 @@
 	NavTypeListHandle typeList = NULL;
 	OSErr err;
 
-	if ( kw ) {
-		if (!PyArg_ParseTuple(args, ""))
+	if ( kw && PyObject_IsTrue(kw) ) {
+		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
 			return NULL;
 		dict = kw;
 	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
@@ -646,8 +646,8 @@
 	NavObjectFilterUPP filterProc = NULL;
 	OSErr err;
 
-	if ( kw ) {
-		if (!PyArg_ParseTuple(args, ""))
+	if ( kw && PyObject_IsTrue(kw) ) {
+		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
 			return NULL;
 		dict = kw;
 	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
@@ -682,8 +682,8 @@
 	NavObjectFilterUPP filterProc = NULL;
 	OSErr err;
 
-	if ( kw ) {
-		if (!PyArg_ParseTuple(args, ""))
+	if ( kw && PyObject_IsTrue(kw) ) {
+		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
 			return NULL;
 		dict = kw;
 	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
@@ -718,8 +718,8 @@
 	NavObjectFilterUPP filterProc = NULL;
 	OSErr err;
 
-	if ( kw ) {
-		if (!PyArg_ParseTuple(args, ""))
+	if ( kw && PyObject_IsTrue(kw) ) {
+		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
 			return NULL;
 		dict = kw;
 	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
@@ -753,8 +753,8 @@
 	NavEventUPP eventProc = NULL;
 	OSErr err;
 
-	if ( kw ) {
-		if (!PyArg_ParseTuple(args, ""))
+	if ( kw && PyObject_IsTrue(kw) ) {
+		if (!PyArg_ParseTuple(args, ";either keyword arguments or dictionary expected"))
 			return NULL;
 		dict = kw;
 	} else if (!PyArg_ParseTuple(args, "O!", &PyDict_Type, &dict))
@@ -771,7 +771,7 @@
 }
 
 #if 0
-XXXX I don't know what to do with the void * argument
+/* XXXX I don't know what to do with the void * argument */
 static char nav_NavCustomControl__doc__[] =
 ""
 ;