Simplify set_behaviors.

This commit is contained in:
lericson 2009-09-18 11:22:54 +02:00
parent 732f181cb7
commit 391878b095

View File

@ -684,17 +684,24 @@ static PyObject *PylibMC_Client_set_behaviors(PylibMC_Client *self,
PylibMC_Behavior *b;
for (b = PylibMC_behaviors; b->name != NULL; b++) {
if (PyMapping_HasKeyString(behaviors, b->name)) {
PyObject *v = PyMapping_GetItemString(behaviors, b->name);
PyObject *v;
memcached_return r;
if (!PyInt_Check(v)) {
if (!PyMapping_HasKeyString(behaviors, b->name)) {
continue;
}
v = PyMapping_GetItemString(behaviors, b->name);
if (v == NULL) {
goto error;
} else if (!PyInt_Check(v)) {
PyErr_Format(PyExc_TypeError, "behavior %s must be int",
b->name);
goto error;
}
r = memcached_behavior_set(self->mc, b->flag, PyInt_AS_LONG(v));
r = memcached_behavior_set(self->mc, b->flag, (uint64_t)PyInt_AS_LONG(v));
Py_DECREF(v);
if (r != MEMCACHED_SUCCESS) {
PyErr_Format(PylibMCExc_MemcachedError,
@ -702,7 +709,6 @@ static PyObject *PylibMC_Client_set_behaviors(PylibMC_Client *self,
goto error;
}
}
}
Py_RETURN_NONE;
error: