Opened 21 years ago

Closed 21 years ago

Last modified 21 years ago

#18 closed defect (released)

get_mset with first!=0 unusable

Reported by: Olivier Galibert Owned by: Olly Betts
Priority: high Milestone:
Component: Library API Version: 0.7.2
Severity: major Keywords:
Cc: Blocked By:
Blocking: Operating System: Linux

Description

If you do a get_mset on an enquire with first != 0 and then try to get the first document through begin()->get_document(), the api blows with: The mset returned from the match does not contain the document at index 0 The reason is that the iterator index is 0..size-1, but MSet::Internal::get_doc_by_index(index) expects index to be in the range firstiterm..firstitem+size-1. Simple fix putting get_doc_by_index assumptions in check with the others: --- omenquire.cc~ 2003-06-05 02:36:10.000000000 +0200 +++ omenquire.cc 2003-08-05 16:59:25.000000000 +0200 @@ -411,6 +411,7 @@

{

DEBUGCALL(API, Document,

"Xapian::MSet::Internal::Data::get_doc_by_index",

index);

+ index += firstitem;

map<Xapian::doccount, Document>::const_iterator doc; doc = indexeddocs.find(index); if (doc != indexeddocs.end()) {

Change History (3)

comment:1 by Olly Betts, 21 years ago

Status: newassigned

comment:2 by Olly Betts, 21 years ago

Resolution: fixed
Status: assignedclosed

Fixed in CVS (with regression test msetiterator3). Thanks for the patch!

comment:3 by Olly Betts, 21 years ago

Operating System: Linux
Resolution: fixedreleased
Note: See TracTickets for help on using tickets.