From e2bd66d56f5da64d6401e2cf3426dc0709362c3f Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Wed, 6 Jun 2018 08:13:11 +0200 Subject: [PATCH] pyrecoll: get fetchmany to raise an exception if there is no result set (PEP 249 database API) --- src/python/recoll/pyrecoll.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/python/recoll/pyrecoll.cpp b/src/python/recoll/pyrecoll.cpp index 4be0a3a8..8821adfa 100644 --- a/src/python/recoll/pyrecoll.cpp +++ b/src/python/recoll/pyrecoll.cpp @@ -1128,16 +1128,19 @@ Query_fetchmany(recoll_QueryObject* self, PyObject *args, PyObject *kwargs) return 0; } int cnt = self->query->getResCnt(); - PyObject *reslist = PyList_New(0); if (cnt <= 0 || self->next < 0) { - return (PyObject *)reslist; + # PEP 249 says to raise exception if no result set + PyErr_SetString(PyExc_AttributeError, "query"); + return 0; } + PyObject *reslist = PyList_New(0); for (int i = 0; i < size; i++) { recoll_DocObject *docobj = (recoll_DocObject *) PyObject_CallObject((PyObject *)&recoll_DocType, 0); if (!docobj) { PyErr_SetString(PyExc_EnvironmentError, "doc create failed"); + Py_DECREF(reslist); return 0; } if (!self->query->getDoc(self->next, *docobj->doc, self->fetchtext)) {