]> git.ipfire.org Git - people/ms/libloc.git/blobdiff - src/stringpool.c
database: Cleanup writing pool
[people/ms/libloc.git] / src / stringpool.c
index 259cd00173620a1436931fb9112e8e0838b9e56d..52c1012f88a054cfa7d8c3df2a9a93b25683bc87 100644 (file)
@@ -23,6 +23,7 @@
 #include <unistd.h>
 
 #include <loc/libloc.h>
+#include <loc/format.h>
 #include "libloc-private.h"
 #include "stringpool.h"
 
@@ -251,5 +252,11 @@ LOC_EXPORT int loc_stringpool_read(struct loc_stringpool* pool, FILE* f, off_t o
 LOC_EXPORT size_t loc_stringpool_write(struct loc_stringpool* pool, FILE* f) {
        size_t size = loc_stringpool_get_size(pool);
 
-       return fwrite(pool->data, sizeof(*pool->data), size, f);
+       size_t bytes_written = fwrite(pool->data, sizeof(*pool->data), size, f);
+
+       // Move to next page boundary
+       while (bytes_written % LOC_DATABASE_PAGE_SIZE > 0)
+               bytes_written += fwrite("", 1, 1, f);
+
+       return bytes_written;
 }