summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2020-08-04 21:28:58 +0100
committerRobert Newson <rnewson@apache.org>2020-08-04 21:36:00 +0100
commit683335cb4f5b50fe0af0ea12317d501e995922f7 (patch)
tree42f5c76666cbd434b9e06f521364cb91d9d7150c
parent22d857d77b24adc989dc53b5554d95b926277401 (diff)
downloadcouchdb-683335cb4f5b50fe0af0ea12317d501e995922f7.tar.gz
Validate the result from collate_fun
-rw-r--r--src/ebtree/src/ebtree.erl12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/ebtree/src/ebtree.erl b/src/ebtree/src/ebtree.erl
index bae0ff310..c28693dbc 100644
--- a/src/ebtree/src/ebtree.erl
+++ b/src/ebtree/src/ebtree.erl
@@ -918,7 +918,12 @@ collate(#tree{} = _Tree, _A, ?MAX) ->
collate(#tree{} = Tree, A, B) ->
#tree{collate_fun = CollateFun} = Tree,
- CollateFun(A, B).
+ case CollateFun(A, B) of
+ lt -> lt;
+ eq -> eq;
+ gt -> gt;
+ _ -> error(invalid_collation_result)
+ end.
collate(#tree{} = Tree, A, B, Allowed) ->
@@ -1090,6 +1095,11 @@ collation_fun_test_() ->
].
+collate_validation_test() ->
+ Tree = #tree{collate_fun = fun(_A, _B) -> foo end},
+ ?assertError(invalid_collation_result, collate(Tree, 1, 2)).
+
+
lookup_test() ->
Db = erlfdb_util:get_test_db([empty]),
Tree = open(Db, <<1,2,3>>, 4),