diff options
author | Björn Gustavsson <[email protected]> | 2016-02-10 12:34:55 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2016-02-10 12:34:55 +0100 |
commit | 3fd58861e8e42140f93e3f1fb5d5113902a47227 (patch) | |
tree | f687d9c6c9ea05e82a24b6412c13627f25414a26 /lib/compiler/src | |
parent | 505a69774fe789bbf7c264574f360c683dd0fcc3 (diff) | |
parent | 47c2ace2a036bbc5da7950aa8c59bc78b4e498e1 (diff) | |
download | otp-3fd58861e8e42140f93e3f1fb5d5113902a47227.tar.gz otp-3fd58861e8e42140f93e3f1fb5d5113902a47227.tar.bz2 otp-3fd58861e8e42140f93e3f1fb5d5113902a47227.zip |
Merge branch 'maint'
* maint:
Eliminate crash because of unsafe delaying of sub-binary creation
Diffstat (limited to 'lib/compiler/src')
-rw-r--r-- | lib/compiler/src/beam_bsm.erl | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/compiler/src/beam_bsm.erl b/lib/compiler/src/beam_bsm.erl index 4f76350269..62356928ae 100644 --- a/lib/compiler/src/beam_bsm.erl +++ b/lib/compiler/src/beam_bsm.erl @@ -421,7 +421,8 @@ btb_follow_branches([], _, D) -> D. btb_follow_branch(0, _Regs, D) -> D; btb_follow_branch(Lbl, Regs, #btb{ok_br=Br0,index=Li}=D) -> - case gb_sets:is_member(Lbl, Br0) of + Key = {Lbl,Regs}, + case gb_sets:is_member(Key, Br0) of true -> %% We have already followed this branch and it was OK. D; @@ -432,7 +433,7 @@ btb_follow_branch(Lbl, Regs, #btb{ok_br=Br0,index=Li}=D) -> btb_reaches_match_1(Is, Regs, D), %% Since we got back, this branch is OK. - D#btb{ok_br=gb_sets:insert(Lbl, Br),must_not_save=MustNotSave, + D#btb{ok_br=gb_sets:insert(Key, Br),must_not_save=MustNotSave, must_save=MustSave} end. |