let pop_call kinstr fd args ~old state =
let call = try Stack.pop call_stack with Stack.Empty -> assert false in
match kinstr with
| Kglobal -> state
| Kstmt s ->
let diff_subst =
try
List.fold_left2
(fun acc x y -> Subst.add x y acc)
Subst.empty
fd.sformals
args
with Invalid_argument _ ->
Subst.empty
in
let leaks =
Leaks.add_from_and_subst
(Cilutil.get_stmtLoc s.skind)
(Kernel_function.get_name call.current_fun)
diff_subst
~from:state.leaks
old.leaks
in
{ state with leaks = leaks }