aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDan Gudmundsson <dgud@erlang.org>2015-09-17 09:40:04 +0200
committerDan Gudmundsson <dgud@erlang.org>2015-09-17 09:40:04 +0200
commitad7bb40d88acd0de5bdad9b64f8d8dd5c303fa48 (patch)
tree0dfb443a8d5ec304e09b85979c57014b7fff8793 /lib
parentacc47d90e34e4552ffe99766da7ac95423db1e30 (diff)
downloadotp-ad7bb40d88acd0de5bdad9b64f8d8dd5c303fa48.tar.gz
otp-ad7bb40d88acd0de5bdad9b64f8d8dd5c303fa48.tar.bz2
otp-ad7bb40d88acd0de5bdad9b64f8d8dd5c303fa48.zip
stdlib: Fix leaking files after error_logger:logfile(close)
Introduced when changing state from tuple to record.
Diffstat (limited to 'lib')
-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),