From f8cd7ed5c1a13c956b3e0047e5350057bcf7dd0d Mon Sep 17 00:00:00 2001 From: Gregory Burd Date: Mon, 25 Jun 2012 10:36:06 +0530 Subject: [PATCH] Don't guard against overly large key spaces for now. --- src/bloom.erl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/bloom.erl b/src/bloom.erl index 8b61dd1..d0e85d1 100644 --- a/src/bloom.erl +++ b/src/bloom.erl @@ -63,13 +63,14 @@ is_element(Key, B, [Idx | T]) -> %% @doc Adds the key to the filter. -spec add_element(term(), #bloom{}) -> #bloom{}. -add_element(Key, #bloom{keys=Keys, n=N, bitmap=Bitmap}=B) - when Keys < N -> +add_element(Key, #bloom{keys=Keys, bitmap=Bitmap}=B) -> % TODO: when Keys < N Idxs = calc_idxs(Key, B), - Bitmap0 = set_bits(Bitmap, Idxs), - case Bitmap0 == Bitmap of - true -> B#bloom{bitmap=Bitmap0}; % Don't increment key count for duplicates. - false -> B#bloom{bitmap=Bitmap0, keys=Keys + 1} + NewBitmap = set_bits(Bitmap, Idxs), + case NewBitmap == Bitmap of + true -> + B#bloom{bitmap=NewBitmap}; + false -> + B#bloom{bitmap=NewBitmap, keys=Keys + 1} end. %% @internal