aboutsummaryrefslogtreecommitdiffstats
path: root/lib/debugger/src/dbg_ieval.erl
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2011-11-07 16:13:30 +0100
committerMicael Karlberg <[email protected]>2011-11-07 16:13:30 +0100
commit8149b970814848dc404767d5635529c61cf20b24 (patch)
treeb829c0cf811b6f230653b75433d01657017c62c7 /lib/debugger/src/dbg_ieval.erl
parent55ae4936f1afabc4475139d7d46d655b61e06b3b (diff)
parent2c18949bf1edfda523ae15229e94a8400bb1870c (diff)
downloadotp-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.erl15
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),