]> code.citadel.org Git - citadel.git/blobdiff - citadel/server/modules/fulltext/serv_fulltext.c
cdb_fetch() and cdb_next_item() now return a struct cdbdata instead of a pointer...
[citadel.git] / citadel / server / modules / fulltext / serv_fulltext.c
index e1558f445cbf4b5d6cb8535f5751c474824c2391..b7a497801e1974831df795dafc01ee17954b04df 100644 (file)
@@ -81,7 +81,7 @@ void ft_index_message(long msgnum, int op) {
        int num_tokens = 0;
        int *tokens = NULL;
        int i, j;
-       struct cdbdata *cdb_bucket;
+       struct cdbdata cdb_bucket;
        StrBuf *msgtext;
        char *txt;
        int tok;
@@ -128,11 +128,10 @@ void ft_index_message(long msgnum, int op) {
                                // fetch the bucket, Liza
                                if (ftc_msgs[tok] == NULL) {
                                        cdb_bucket = cdb_fetch(CDB_FULLTEXT, &tok, sizeof(int));
-                                       if (cdb_bucket != NULL) {
-                                               ftc_num_msgs[tok] = cdb_bucket->len / sizeof(long);
-                                               ftc_msgs[tok] = malloc(cdb_bucket->len);
-                                               memcpy(ftc_msgs[tok], cdb_bucket->ptr, cdb_bucket->len);
-                                               cdb_free(cdb_bucket);
+                                       if (cdb_bucket.len > 0) {
+                                               ftc_num_msgs[tok] = cdb_bucket.len / sizeof(long);
+                                               ftc_msgs[tok] = malloc(cdb_bucket.len);
+                                               memcpy(ftc_msgs[tok], cdb_bucket.ptr, cdb_bucket.len);
                                        }
                                        else {
                                                ftc_num_msgs[tok] = 0;
@@ -293,7 +292,7 @@ void ft_search(int *fts_num_msgs, long **fts_msgs, const char *search_string) {
        int num_tokens = 0;
        int *tokens = NULL;
        int i, j;
-       struct cdbdata *cdb_bucket;
+       struct cdbdata cdb_bucket;
        int num_all_msgs = 0;
        long *all_msgs = NULL;
        int num_ret_msgs = 0;
@@ -311,11 +310,10 @@ void ft_search(int *fts_num_msgs, long **fts_msgs, const char *search_string) {
                        // fetch the bucket, Liza
                        if (ftc_msgs[tok] == NULL) {
                                cdb_bucket = cdb_fetch(CDB_FULLTEXT, &tok, sizeof(int));
-                               if (cdb_bucket != NULL) {
-                                       ftc_num_msgs[tok] = cdb_bucket->len / sizeof(long);
-                                       ftc_msgs[tok] = (long *) malloc(cdb_bucket->len);
-                                       memcpy(ftc_msgs[tok], cdb_bucket->ptr, cdb_bucket->len);
-                                       cdb_free(cdb_bucket);
+                               if (cdb_bucket.len > 0) {
+                                       ftc_num_msgs[tok] = cdb_bucket.len / sizeof(long);
+                                       ftc_msgs[tok] = (long *) malloc(cdb_bucket.len);
+                                       memcpy(ftc_msgs[tok], cdb_bucket.ptr, cdb_bucket.len);
                                }
                                else {
                                        ftc_num_msgs[tok] = 0;