diff options
author | Dan Gudmundsson <dgud@erlang.org> | 2015-09-18 08:29:47 +0200 |
---|---|---|
committer | Dan Gudmundsson <dgud@erlang.org> | 2015-09-18 08:29:47 +0200 |
commit | b5fc65bb0a959bd96c125ce523c41052bbc0c04d (patch) | |
tree | 233429a59fd5a5e557861abe16fe23c01725d266 /lib | |
parent | 3a33ee25ec2f9da0194a76649782154f41076cc9 (diff) | |
parent | ad7bb40d88acd0de5bdad9b64f8d8dd5c303fa48 (diff) | |
download | otp-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)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/stdlib/src/error_logger_file_h.erl | 10 | ||||
-rw-r--r-- | lib/stdlib/test/error_logger_h_SUITE.erl | 6 |
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), |