aboutsummaryrefslogtreecommitdiffstats
path: root/lib/mnesia/src/mnesia_index.erl
diff options
context:
space:
mode:
authorFredrik Gustafsson <[email protected]>2012-08-27 11:30:15 +0200
committerFredrik Gustafsson <[email protected]>2012-08-27 11:30:15 +0200
commit1e27e69bfb2f119aac822937cb2625313de1a6cd (patch)
tree3467d81bf5ae079257f7a284825547a8cd56450f /lib/mnesia/src/mnesia_index.erl
parent8db887dec9d864eb6276e432d6159716a4316100 (diff)
parentfade3d414f2a052fc810eb4aa9b681c70fc94575 (diff)
downloadotp-1e27e69bfb2f119aac822937cb2625313de1a6cd.tar.gz
otp-1e27e69bfb2f119aac822937cb2625313de1a6cd.tar.bz2
otp-1e27e69bfb2f119aac822937cb2625313de1a6cd.zip
Merge branch 'bp/fix_mnesia_index_drop/OTP-10220' into maint
* bp/fix_mnesia_index_drop/OTP-10220: Bumped version nr Prevent index from being corrupted if a nonexistent item is deleted Add tests showing that trying to delete non-existing object may corrupt the table index
Diffstat (limited to 'lib/mnesia/src/mnesia_index.erl')
-rw-r--r--lib/mnesia/src/mnesia_index.erl6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/mnesia/src/mnesia_index.erl b/lib/mnesia/src/mnesia_index.erl
index 61210d7e55..37989a1958 100644
--- a/lib/mnesia/src/mnesia_index.erl
+++ b/lib/mnesia/src/mnesia_index.erl
@@ -120,9 +120,9 @@ del_object_bag(Tab, Key, Obj, Pos, Ixt, undefined) ->
IxKey = element(Pos, Obj),
Old = [X || X <- mnesia_lib:db_get(Tab, Key), element(Pos, X) =:= IxKey],
del_object_bag(Tab, Key, Obj, Pos, Ixt, Old);
-%% If Tab type is bag we need remove index identifier if Tab
-%% contains less than 2 elements.
-del_object_bag(_Tab, Key, Obj, Pos, Ixt, Old) when length(Old) < 2 ->
+%% If Tab type is bag we need remove index identifier if the object being
+%% deleted was the last one
+del_object_bag(_Tab, Key, Obj, Pos, Ixt, Old) when Old =:= [Obj] ->
del_ixes(Ixt, [Obj], Pos, Key);
del_object_bag(_Tab, _Key, _Obj, _Pos, _Ixt, _Old) -> ok.