aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2015-09-18 08:30:36 +0200
committerDan Gudmundsson <[email protected]>2015-09-18 08:30:36 +0200
commit76dd921ad99aa3ef98424a2f1c4bc8de66e766e2 (patch)
treeac13f3bc1ed9a108c07f21487210aaa844841212
parent803b9f8b80ca937dd5b62c594a115fc4aa554b33 (diff)
parentb5fc65bb0a959bd96c125ce523c41052bbc0c04d (diff)
downloadotp-76dd921ad99aa3ef98424a2f1c4bc8de66e766e2.tar.gz
otp-76dd921ad99aa3ef98424a2f1c4bc8de66e766e2.tar.bz2
otp-76dd921ad99aa3ef98424a2f1c4bc8de66e766e2.zip
Merge branch 'maint'
* maint: 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),