diff options
author | Micael Karlberg <[email protected]> | 2011-11-07 16:13:30 +0100 |
---|---|---|
committer | Micael Karlberg <[email protected]> | 2011-11-07 16:13:30 +0100 |
commit | 8149b970814848dc404767d5635529c61cf20b24 (patch) | |
tree | b829c0cf811b6f230653b75433d01657017c62c7 /lib/debugger/src/dbg_ieval.erl | |
parent | 55ae4936f1afabc4475139d7d46d655b61e06b3b (diff) | |
parent | 2c18949bf1edfda523ae15229e94a8400bb1870c (diff) | |
download | otp-8149b970814848dc404767d5635529c61cf20b24.tar.gz otp-8149b970814848dc404767d5635529c61cf20b24.tar.bz2 otp-8149b970814848dc404767d5635529c61cf20b24.zip |
Merge branch 'master' of super:otp into bmk/megaco/r15_integration
Diffstat (limited to 'lib/debugger/src/dbg_ieval.erl')
-rw-r--r-- | lib/debugger/src/dbg_ieval.erl | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/debugger/src/dbg_ieval.erl b/lib/debugger/src/dbg_ieval.erl index df725ed9e5..2e88c35741 100644 --- a/lib/debugger/src/dbg_ieval.erl +++ b/lib/debugger/src/dbg_ieval.erl @@ -768,6 +768,21 @@ expr({make_fun,Line,Name,Cs}, Bs, #ieval{module=Module}=Ieval) -> end, {value,Fun,Bs}; +%% Construct an external fun. +expr({make_ext_fun,Line,MFA0}, Bs0, Ieval0) -> + {[M,F,A],Bs} = eval_list(MFA0, Bs0, Ieval0), + try erlang:make_fun(M, F, A) of + Value -> + {value,Value,Bs} + catch + error:badarg -> + Ieval1 = Ieval0#ieval{line=Line}, + Ieval2 = dbg_istk:push(Bs0, Ieval1, false), + Ieval = Ieval2#ieval{module=erlang,function=make_fun, + arguments=[M,F,A],line=-1}, + exception(error, badarg, Bs, Ieval, true) + end; + %% Common test adaptation expr({call_remote,0,ct_line,line,As0,Lc}, Bs0, Ieval0) -> {As,_Bs} = eval_list(As0, Bs0, Ieval0), |