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
if (valObject == NULL)
return -1;
- DICTKEY_GET(-1)
+ DICTKEY_GET_NOTEMPTY(-1)
di = dictitem_alloc(key);
return -1;
}
- DICTKEY_GET(-1)
+ DICTKEY_GET_NOTEMPTY(-1)
valObject = PyTuple_GetItem(litem, 1);
if (valObject == NULL)
DictionaryItem(PyObject *self, PyObject *keyObject)
{
char_u *key;
- dictitem_T *val;
+ dictitem_T *di;
DICTKEY_DECL
- DICTKEY_GET(NULL)
+ DICTKEY_GET_NOTEMPTY(NULL)
+
+ di = dict_find(((DictionaryObject *) (self))->dict, key, -1);
- val = 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
return -1;
}
- DICTKEY_GET(-1)
+ DICTKEY_GET_NOTEMPTY(-1)
di = dict_find(d, key, -1);