Simplify set_behaviors.

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

View File

@ -684,23 +684,29 @@ static PyObject *PylibMC_Client_set_behaviors(PylibMC_Client *self,
PylibMC_Behavior *b; PylibMC_Behavior *b;
for (b = PylibMC_behaviors; b->name != NULL; b++) { for (b = PylibMC_behaviors; b->name != NULL; b++) {
if (PyMapping_HasKeyString(behaviors, b->name)) { PyObject *v;
PyObject *v = PyMapping_GetItemString(behaviors, b->name); memcached_return r;
memcached_return r;
if (!PyInt_Check(v)) { if (!PyMapping_HasKeyString(behaviors, b->name)) {
PyErr_Format(PyExc_TypeError, "behavior %s must be int", continue;
b->name); }
goto error;
}
r = memcached_behavior_set(self->mc, b->flag, PyInt_AS_LONG(v)); v = PyMapping_GetItemString(behaviors, b->name);
Py_DECREF(v);
if (r != MEMCACHED_SUCCESS) { if (v == NULL) {
PyErr_Format(PylibMCExc_MemcachedError, goto error;
"memcached_behavior_set returned %d", r); } else if (!PyInt_Check(v)) {
goto error; PyErr_Format(PyExc_TypeError, "behavior %s must be int",
} b->name);
goto error;
}
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,
"memcached_behavior_set returned %d", r);
goto error;
} }
} }