diff --git a/.bfilter.c.swo b/.bfilter.c.swo new file mode 100644 index 0000000..8df8992 Binary files /dev/null and b/.bfilter.c.swo differ diff --git a/.bfilter.h.swo b/.bfilter.h.swo new file mode 100644 index 0000000..1504c24 Binary files /dev/null and b/.bfilter.h.swo differ diff --git a/.bfilter.py.swo b/.bfilter.py.swo new file mode 100644 index 0000000..a6b3ff8 Binary files /dev/null and b/.bfilter.py.swo differ diff --git a/Makefile b/Makefile index f40f162..086bb2c 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ default: bfilter.c bfilter.h - $(CC) -g -Wall -Wextra -std=gnu99 -Wpointer-arith -Wmissing-prototypes -lfnv -lm -L. -O0 ./bfilter.c -o test -Wl,-rpath,/home/wes/bfilter; + $(CC) -g -Wall -Wextra -std=gnu99 -Wpointer-arith -Wmissing-prototypes -lfnv -lm -L. -O3 ./bfilter.c -o test -Wl,-rpath,/home/wes/bfilter; lib: bfilter.c bfilter.h - $(CC) -g -DLIB -c -fpic -Wall -Wextra -pedantic -Wpointer-arith -Werror -std=c99 -lfnv -lm -L. -O0 ./bfilter.c -Wl,-rpath,/home/wes/bfilter; + $(CC) -g -DLIB -c -fpic -Wall -Wextra -pedantic -Wpointer-arith -Werror -std=c99 -lfnv -lm -L. -O3 ./bfilter.c -Wl,-rpath,/home/wes/bfilter; $(CC) -shared -o bfilter.so bfilter.o; diff --git a/bfilter.c b/bfilter.c index 54af651..bab533b 100644 --- a/bfilter.c +++ b/bfilter.c @@ -186,6 +186,7 @@ bfilter_get(bit_array_t *filter, int release_bfilter(bit_array_t *filter) { + printf("Releasing bloom filter\n"); free(filter->arr); free(filter); return 0; diff --git a/bfilter.o b/bfilter.o index 954c271..8e305aa 100644 Binary files a/bfilter.o and b/bfilter.o differ diff --git a/bfilter.py b/bfilter.py index 8ca0525..666a29a 100755 --- a/bfilter.py +++ b/bfilter.py @@ -44,6 +44,8 @@ int bfilter_set(bit_array_t *, const char*, int); int bfilter_get(bit_array_t *, const char*, int); int getbit(bit_array_t *, int); + +int release_bfilter(bit_array_t *); """) class BloomFilter: @@ -51,7 +53,7 @@ class BloomFilter: self.m = m self.k = k - self.bitset = lib.empty_bfilter(m) + self.bitset = ffi.gc(lib.empty_bfilter(m), lib.release_bfilter) def add(self, key): lib.bfilter_set(self.bitset, key.encode("UTF-8"), self.k) diff --git a/bfilter.so b/bfilter.so index 07bdd86..97f9910 100755 Binary files a/bfilter.so and b/bfilter.so differ