diff --git a/src/if_py_both.h b/src/if_py_both.h
index 931ecb9..3ab1851 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -607,6 +607,14 @@
 
 static PyTypeObject DictionaryType;
 
+#define DICTKEY_GET_NOTEMPTY(err) \
+    DICTKEY_GET(err) \
+    if (*key == NUL) \
+    { \
+	PyErr_SetString(PyExc_ValueError, _("empty keys are not allowed")); \
+	return err; \
+    }
+
 typedef struct
 {
     PyObject_HEAD
@@ -659,7 +667,7 @@
 	if (valObject == NULL)
 	    return -1;
 
-	DICTKEY_GET(-1)
+	DICTKEY_GET_NOTEMPTY(-1)
 
 	di = dictitem_alloc(key);
 
@@ -730,7 +738,7 @@
 	    return -1;
 	}
 
-	DICTKEY_GET(-1)
+	DICTKEY_GET_NOTEMPTY(-1)
 
 	valObject = PyTuple_GetItem(litem, 1);
 	if (valObject == NULL)
@@ -784,16 +792,22 @@
 DictionaryItem(PyObject *self, PyObject *keyObject)
 {
     char_u	*key;
-    dictitem_T	*val;
+    dictitem_T	*di;
     DICTKEY_DECL
 
-    DICTKEY_GET(NULL)
+    DICTKEY_GET_NOTEMPTY(NULL)
 
-    val = dict_find(((DictionaryObject *) (self))->dict, key, -1);
+    di = dict_find(((DictionaryObject *) (self))->dict, key, -1);
+
+    if (di == NULL)
+    {
+	PyErr_SetString(PyExc_IndexError, _("no such key in dictionary"));
+	return NULL;
+    }
 
     DICTKEY_UNREF
 
-    return ConvertToPyObject(&val->di_tv);
+    return ConvertToPyObject(&di->di_tv);
 }
 
     static PyInt
@@ -811,7 +825,7 @@
 	return -1;
     }
 
-    DICTKEY_GET(-1)
+    DICTKEY_GET_NOTEMPTY(-1)
 
     di = dict_find(d, key, -1);
 
