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; 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)) {
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", PyErr_Format(PyExc_TypeError, "behavior %s must be int",
b->name); b->name);
goto error; 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); Py_DECREF(v);
if (r != MEMCACHED_SUCCESS) { if (r != MEMCACHED_SUCCESS) {
PyErr_Format(PylibMCExc_MemcachedError, PyErr_Format(PylibMCExc_MemcachedError,
@ -702,7 +709,6 @@ static PyObject *PylibMC_Client_set_behaviors(PylibMC_Client *self,
goto error; goto error;
} }
} }
}
Py_RETURN_NONE; Py_RETURN_NONE;
error: error: