Handle errors in bool value parsing better.
This commit is contained in:
parent
a3b31a5dbb
commit
ab407b51c7
@ -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);
|
||||||
|
Reference in New Issue
Block a user