Switch to unified view

a/src/python/recoll/pyrecoll.cpp b/src/python/recoll/pyrecoll.cpp
...
...
1033
       (recoll_DocObject *)PyObject_CallObject((PyObject *)&recoll_DocType, 0);
1033
       (recoll_DocObject *)PyObject_CallObject((PyObject *)&recoll_DocType, 0);
1034
    if (!result) {
1034
    if (!result) {
1035
        PyErr_SetString(PyExc_EnvironmentError, "doc create failed");
1035
        PyErr_SetString(PyExc_EnvironmentError, "doc create failed");
1036
    return 0;
1036
    return 0;
1037
    }
1037
    }
1038
    if (self->next >= self->rowcount) {
1038
1039
    // We used to check against rowcount here, but this was wrong:
1040
    // xapian result count estimate are sometimes wrong, we must go on
1041
    // fetching until we fail
1042
    if (!self->query->getDoc(self->next, *result->doc)) {
1039
        PyErr_SetNone(PyExc_StopIteration);
1043
        PyErr_SetNone(PyExc_StopIteration);
1040
  return 0;
1041
    }
1042
    if (!self->query->getDoc(self->next, *result->doc)) {
1043
        PyErr_SetString(PyExc_EnvironmentError, "query: cant fetch result");
1044
  self->next = -1;
1045
    return 0;
1044
    return 0;
1046
    }
1045
    }
1047
    self->next++;
1046
    self->next++;
1048
1047
1049
    movedocfields(result->doc);
1048
    movedocfields(result->doc);
...
...
1079
        PyErr_SetString(PyExc_AttributeError, "query: no results");
1078
        PyErr_SetString(PyExc_AttributeError, "query: no results");
1080
        return 0;
1079
        return 0;
1081
    }
1080
    }
1082
1081
1083
    PyObject *reslist = PyList_New(0);
1082
    PyObject *reslist = PyList_New(0);
1084
    int howmany = MIN(self->rowcount - self->next, size);
1085
    for (int i = 0; i < howmany; i++) {
1083
    for (int i = 0; i < size; i++) {
1086
        recoll_DocObject *docobj = (recoll_DocObject *)
1084
        recoll_DocObject *docobj = (recoll_DocObject *)
1087
        PyObject_CallObject((PyObject *)&recoll_DocType, 0);
1085
        PyObject_CallObject((PyObject *)&recoll_DocType, 0);
1088
        if (!docobj) {
1086
        if (!docobj) {
1089
            PyErr_SetString(PyExc_EnvironmentError, "doc create failed");
1087
            PyErr_SetString(PyExc_EnvironmentError, "doc create failed");
1090
            return 0;
1088
            return 0;
1091
        }
1089
        }
1092
        if (!self->query->getDoc(self->next, *docobj->doc)) {
1090
        if (!self->query->getDoc(self->next, *docobj->doc)) {
1093
            PyErr_SetString(PyExc_EnvironmentError, "can't fetch");
1091
            PyErr_SetNone(PyExc_StopIteration);
1094
            self->next = -1;
1095
            return 0;
1092
            break;
1096
        }
1093
        }
1097
        self->next++;
1094
        self->next++;
1098
        movedocfields(docobj->doc);
1095
        movedocfields(docobj->doc);
1099
        PyList_Append(reslist,  (PyObject*)docobj);
1096
        PyList_Append(reslist,  (PyObject*)docobj);
1100
    }
1097
    }