aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-text-index.c
diff options
context:
space:
mode:
Diffstat (limited to 'camel/camel-text-index.c')
-rw-r--r--camel/camel-text-index.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/camel/camel-text-index.c b/camel/camel-text-index.c
index 9822df85f1..ab2ec72661 100644
--- a/camel/camel-text-index.c
+++ b/camel/camel-text-index.c
@@ -372,12 +372,21 @@ text_index_compress_nosync(CamelIndex *idx)
camel_key_t *records, newrecords[256];
struct _CamelTextIndexRoot *rb;
- newpath = alloca(strlen(idx->path)+5);
- tmp_name(idx->path, newpath);
- savepath = alloca(strlen(idx->path)+2);
- sprintf(savepath, "%s~", idx->path);
- oldpath = alloca(strlen(idx->path)+1);
+ i = strlen(idx->path)+16;
+ oldpath = alloca(i);
+ newpath = alloca(i);
+ savepath = alloca(i);
+
strcpy(oldpath, idx->path);
+ oldpath[strlen(oldpath)-strlen(".index")] = 0;
+
+ tmp_name(oldpath, newpath);
+ sprintf(savepath, "%s~", oldpath);
+
+ d(printf("Old index: %s\n", idx->path));
+ d(printf("Old path: %s\n", oldpath));
+ d(printf("New: %s\n", newpath));
+ d(printf("Save: %s\n", savepath));
newidx = camel_text_index_new(newpath, O_RDWR|O_CREAT);
if (newidx == NULL)
@@ -504,8 +513,9 @@ fail:
/* clean up temp files always */
camel_text_index_remove(newpath);
+
+ sprintf(savepath, "%s~.index", oldpath);
unlink(savepath);
- newpath = alloca(strlen(savepath)+6);
sprintf(newpath, "%s.data", savepath);
unlink(newpath);
@@ -1519,7 +1529,7 @@ camel_text_index_name_new(CamelTextIndex *idx, const char *name, camel_key_t nam
cin->index = (CamelIndex *)idx;
camel_object_ref((CamelObject *)idx);
- cin->name = g_strdup(name);
+ cin->name = e_mempool_strdup(p->pool, name);
p->nameid = nameid;
return idn;