diff options
author | Sverker Eriksson <[email protected]> | 2018-10-09 13:14:09 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2018-10-09 13:14:09 +0200 |
commit | f4f409ff28185b3308359ca5ca91921bc51f536f (patch) | |
tree | 9a5a431baf824be729f6eb2b31ba0700247b07f8 /erts/emulator | |
parent | 5e4083353479ed3d5c3628c46dad9e32883243dc (diff) | |
parent | 8018680cc1977ac2d70c070a5761cfe2db914821 (diff) | |
download | otp-f4f409ff28185b3308359ca5ca91921bc51f536f.tar.gz otp-f4f409ff28185b3308359ca5ca91921bc51f536f.tar.bz2 otp-f4f409ff28185b3308359ca5ca91921bc51f536f.zip |
Merge branch 'maint'
# Conflicts:
# erts/emulator/beam/erl_db_tree.c
Diffstat (limited to 'erts/emulator')
-rw-r--r-- | erts/emulator/beam/erl_db_tree.c | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/erts/emulator/beam/erl_db_tree.c b/erts/emulator/beam/erl_db_tree.c index f643344477..004973b3f1 100644 --- a/erts/emulator/beam/erl_db_tree.c +++ b/erts/emulator/beam/erl_db_tree.c @@ -1995,22 +1995,14 @@ int db_select_replace_tree_common(Process *p, DbTableCommon *tb, TreeDbTerm **ro sc.mp = mpi.mp; - stack = get_static_stack(stack_container); if (!mpi.got_partial && mpi.some_limitation && CMP_EQ(mpi.least,mpi.most)) { - TreeDbTerm* term = *(mpi.save_term); doit_select_replace(tb,mpi.save_term,&sc,0 /* dummy */); - if (stack != NULL) { - if (TOP_NODE(stack) == term) - // throw away potentially invalid reference - REPLACE_TOP_NODE(stack, *(mpi.save_term)); - release_stack((DbTable*)tb,stack_container, stack); - } + reset_static_stack(tb); /* may refer replaced term */ RET_TO_BIF(erts_make_integer(sc.replaced,p),DB_ERROR_NONE); } - if (stack == NULL) - stack = get_any_stack((DbTable*)tb,stack_container); + stack = get_any_stack((DbTable*)tb,stack_container); if (mpi.some_limitation) { if ((this = find_next_from_pb_key(tb, *root, stack, mpi.most)) != NULL) { |