Handle errors in bool value parsing better.

This commit is contained in:
lericson 2009-09-08 16:15:49 +02:00
parent a3b31a5dbb
commit ab407b51c7

View File

@ -125,7 +125,7 @@ static int PylibMC_Client_init(PylibMC_Client *self, PyObject *args,
static PyObject *_PylibMC_parse_memcached_value(char *value, size_t size, static PyObject *_PylibMC_parse_memcached_value(char *value, size_t size,
uint32_t flags) { uint32_t flags) {
PyObject *retval; PyObject *retval, *tmp;
retval = NULL; retval = NULL;
switch (flags) { switch (flags) {
@ -137,8 +137,11 @@ static PyObject *_PylibMC_parse_memcached_value(char *value, size_t size,
retval = PyInt_FromString(value, NULL, 10); retval = PyInt_FromString(value, NULL, 10);
break; break;
case PYLIBMC_FLAG_BOOL: case PYLIBMC_FLAG_BOOL:
retval = PyInt_FromString(value, NULL, 10); if ((tmp = PyInt_FromString(value, NULL, 10)) == NULL) {
retval = PyBool_FromLong(PyInt_AS_LONG(retval)); return NULL;
}
retval = PyBool_FromLong(PyInt_AS_LONG(tmp));
Py_DECREF(tmp);
break; break;
case PYLIBMC_FLAG_NONE: case PYLIBMC_FLAG_NONE:
retval = PyString_FromStringAndSize(value, (Py_ssize_t)size); retval = PyString_FromStringAndSize(value, (Py_ssize_t)size);