diff --git a/_pylibmcmodule.c b/_pylibmcmodule.c index e61db10..3910f18 100644 --- a/_pylibmcmodule.c +++ b/_pylibmcmodule.c @@ -58,7 +58,7 @@ static void PylibMC_ClientType_dealloc(PylibMC_Client *self) { static int PylibMC_Client_init(PylibMC_Client *self, PyObject *args, PyObject *kwds) { PyObject *srvs, *srvs_it, *c_srv; - unsigned char set_stype = 0, bin = 0; + unsigned char set_stype = 0, bin = 0, got_server = 0; static char *kws[] = { "servers", "binary", NULL }; @@ -76,6 +76,7 @@ static int PylibMC_Client_init(PylibMC_Client *self, PyObject *args, unsigned short int port; memcached_return rc; + got_server |= 1; port = 0; if (PyString_Check(c_srv)) { memcached_server_st *list; @@ -137,6 +138,11 @@ it_error: goto error; } + if (!got_server) { + PyErr_SetString(PylibMCExc_MemcachedError, "empty server list"); + goto error; + } + Py_DECREF(srvs_it); return 0; error: diff --git a/tests.py b/tests.py index 15d9124..15e0639 100644 --- a/tests.py +++ b/tests.py @@ -171,6 +171,9 @@ True 'world' >>> c.delete("hello") True + +Empty server lists are bad for your health. +>>> c = _pylibmc.client([]) """ # Used to test pickling.