summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dtree.erl9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/dtree.erl b/src/dtree.erl
index f39d8e3ac9..436bac558f 100644
--- a/src/dtree.erl
+++ b/src/dtree.erl
@@ -121,10 +121,13 @@ take_all(SK, {P, S}) ->
{KVs, {P1, prune(SKS, PKS, S)}}
end.
-%% Drop all entries for the given primary key.
+%% Drop all entries for the given primary key (which does not have to exist).
drop(PK, {P, S}) ->
- SKS = gb_trees:get(PK, P),
- {gb_trees:delete(PK, P), prune(SKS, gb_sets:singleton(PK), S)}.
+ case gb_trees:lookup(PK, P) of
+ none -> {P, S};
+ {value, SKS} -> {gb_trees:delete(PK, P),
+ prune(SKS, gb_sets:singleton(PK), S)}
+ end.
is_defined(SK, {_P, S}) -> gb_trees:is_defined(SK, S).