X-Git-Url: http://the.earth.li/gitweb/?a=blobdiff_plain;f=keydb_db4.c;h=85aeab559e9c60a7f6300401d176bfd6c19f5ee7;hb=cc9554e545f58905fa020e23134a1ff29569ee16;hp=7f6404c492558501239290b53c3b29b5b29c354d;hpb=20902952625408183946472e70d0cb2a2d17934d;p=onak.git diff --git a/keydb_db4.c b/keydb_db4.c index 7f6404c..85aeab5 100644 --- a/keydb_db4.c +++ b/keydb_db4.c @@ -475,6 +475,7 @@ static int db4_fetch_key_text(const char *search, struct ll *curword = NULL; struct keyarray keylist = { NULL, 0, 0 }; struct keyarray newkeylist = { NULL, 0, 0 }; + int firstpass = 1; numkeys = 0; searchtext = strdup(search); @@ -507,8 +508,12 @@ static int db4_fetch_key_text(const char *search, data.data)[i]; } - if (keylist.count == 0 || - array_find(&keylist, keyid)) { + /* + * Only add the keys containing this word if this is + * our first pass (ie we have no existing key list), + * or the key contained a previous word. + */ + if (firstpass || array_find(&keylist, keyid)) { array_add(&newkeylist, keyid); } @@ -530,6 +535,7 @@ static int db4_fetch_key_text(const char *search, } ret = cursor->c_close(cursor); cursor = NULL; + firstpass = 0; db4_endtrans(); } llfree(wordlist, NULL);