aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2015-09-18 08:29:47 +0200
committerDan Gudmundsson <[email protected]>2015-09-18 08:29:47 +0200
commitb5fc65bb0a959bd96c125ce523c41052bbc0c04d (patch)
tree233429a59fd5a5e557861abe16fe23c01725d266
parent3a33ee25ec2f9da0194a76649782154f41076cc9 (diff)
parentad7bb40d88acd0de5bdad9b64f8d8dd5c303fa48 (diff)
downloadotp-b5fc65bb0a959bd96c125ce523c41052bbc0c04d.tar.gz
otp-b5fc65bb0a959bd96c125ce523c41052bbc0c04d.tar.bz2
otp-b5fc65bb0a959bd96c125ce523c41052bbc0c04d.zip
Merge branch 'dgud/stdlib/fix-file-error_log-leak' into maint
* dgud/stdlib/fix-file-error_log-leak: stdlib: Fix leaking files after error_logger:logfile(close)
-rw-r--r--lib/stdlib/src/error_logger_file_h.erl10
-rw-r--r--lib/stdlib/test/error_logger_h_SUITE.erl6
2 files changed, 8 insertions, 8 deletions
diff --git a/lib/stdlib/src/error_logger_file_h.erl b/lib/stdlib/src/error_logger_file_h.erl
index 48c471924e..fea1656051 100644
--- a/lib/stdlib/src/error_logger_file_h.erl
+++ b/lib/stdlib/src/error_logger_file_h.erl
@@ -94,14 +94,8 @@ handle_call(filename, #st{filename=File}=State) ->
handle_call(_Query, State) ->
{ok, {error, bad_query}, State}.
-terminate(_Reason, State) ->
- case State of
- {Fd, _File, _Prev} ->
- ok = file:close(Fd);
- _ ->
- ok
- end,
- [].
+terminate(_Reason, #st{fd=Fd}) ->
+ file:close(Fd).
code_change(_OldVsn, State, _Extra) ->
{ok, State}.
diff --git a/lib/stdlib/test/error_logger_h_SUITE.erl b/lib/stdlib/test/error_logger_h_SUITE.erl
index b0b9c717a1..c82b1b62ef 100644
--- a/lib/stdlib/test/error_logger_h_SUITE.erl
+++ b/lib/stdlib/test/error_logger_h_SUITE.erl
@@ -65,6 +65,12 @@ logfile(Config) ->
error_logger:logfile(close),
analyse_events(Log, Ev, [AtNode], unlimited),
+ [] = [{X, file:pid2name(X)} || X <- processes(), Data <- [process_info(X, [current_function])],
+ Data =/= undefined,
+ element(1, element(2, lists:keyfind(current_function, 1, Data)))
+ =:= file_io_server,
+ file:pid2name(X) =:= {ok, Log}],
+
test_server:stop_node(Node),
cleanup(Log),