aboutsummaryrefslogtreecommitdiffstats
path: root/lib/mnesia/src
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2018-08-13 16:28:44 +0200
committerDan Gudmundsson <[email protected]>2018-08-13 16:28:44 +0200
commitb0a453f9f950df868ea8913e9c81a1faca6a020f (patch)
tree0fd09b5ec216f2260ff78188b8868b8e65ee8ba8 /lib/mnesia/src
parent481c68c498bf28653ce35dd9289e8a4181aa9002 (diff)
parent4fc61aa178faa80290356a63d8e38d93697b9669 (diff)
downloadotp-b0a453f9f950df868ea8913e9c81a1faca6a020f.tar.gz
otp-b0a453f9f950df868ea8913e9c81a1faca6a020f.tar.bz2
otp-b0a453f9f950df868ea8913e9c81a1faca6a020f.zip
Merge branch 'maint'
* maint: Fix delete_object and write convergence in transaction. Replace for loop with strchr Fix typos Clean unused wxe_driver callbacks Remove wx c_src compilation warning on Darwin
Diffstat (limited to 'lib/mnesia/src')
-rw-r--r--lib/mnesia/src/mnesia.erl16
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/mnesia/src/mnesia.erl b/lib/mnesia/src/mnesia.erl
index 62202401ed..223dba3f90 100644
--- a/lib/mnesia/src/mnesia.erl
+++ b/lib/mnesia/src/mnesia.erl
@@ -783,12 +783,16 @@ do_delete_object(Tid, Ts, Tab, Val, LockKind) ->
?ets_insert(Store, {Oid, Val, delete_object});
_ ->
case ?ets_match_object(Store, {Oid, '_', write}) of
- [] ->
- ?ets_match_delete(Store, {Oid, Val, '_'}),
- ?ets_insert(Store, {Oid, Val, delete_object});
- _ ->
- ?ets_delete(Store, Oid),
- ?ets_insert(Store, {Oid, Oid, delete})
+ [] ->
+ ?ets_match_delete(Store, {Oid, Val, '_'}),
+ ?ets_insert(Store, {Oid, Val, delete_object});
+ Ops ->
+ case lists:member({Oid, Val, write}, Ops) of
+ true ->
+ ?ets_delete(Store, Oid),
+ ?ets_insert(Store, {Oid, Oid, delete});
+ false -> ok
+ end
end
end,
ok;