aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/src
diff options
context:
space:
mode:
authorPatrik Nyblom <[email protected]>2012-03-05 17:29:03 +0100
committerPatrik Nyblom <[email protected]>2012-03-22 18:16:14 +0100
commitdb4ddca4d9709965121fba9a1f9cc68226f35a0c (patch)
treef3a6719ac33760ed669b5c1d84aca67626cec4cb /lib/kernel/src
parentcca350ef2206a81c0f8969071f412f07b87413a1 (diff)
downloadotp-db4ddca4d9709965121fba9a1f9cc68226f35a0c.tar.gz
otp-db4ddca4d9709965121fba9a1f9cc68226f35a0c.tar.bz2
otp-db4ddca4d9709965121fba9a1f9cc68226f35a0c.zip
Correct some errors in the user tag spreading
Diffstat (limited to 'lib/kernel/src')
-rw-r--r--lib/kernel/src/file.erl11
-rw-r--r--lib/kernel/src/file_io_server.erl3
2 files changed, 9 insertions, 5 deletions
diff --git a/lib/kernel/src/file.erl b/lib/kernel/src/file.erl
index 3a618976f5..b281151778 100644
--- a/lib/kernel/src/file.erl
+++ b/lib/kernel/src/file.erl
@@ -1416,15 +1416,16 @@ mode_list(_) ->
%% Functions for communicating with the file server
call(Command, Args) when is_list(Args) ->
- gen_server:call(?FILE_SERVER, list_to_tuple([Command | Args]), infinity).
+ X = erlang:spread_utag(true),
+ Y = gen_server:call(?FILE_SERVER, list_to_tuple([Command | Args]),
+ infinity),
+ erlang:restore_utag(X),
+ Y.
check_and_call(Command, Args) when is_list(Args) ->
case check_args(Args) of
ok ->
- X = erlang:spread_utag(true),
- Y = call(Command, Args),
- erlang:restore_utag(X),
- Y;
+ call(Command, Args);
Error ->
Error
end.
diff --git a/lib/kernel/src/file_io_server.erl b/lib/kernel/src/file_io_server.erl
index 14da9c1a55..6369a5250c 100644
--- a/lib/kernel/src/file_io_server.erl
+++ b/lib/kernel/src/file_io_server.erl
@@ -57,9 +57,11 @@ start_link(Owner, FileName, ModeList)
do_start(Spawn, Owner, FileName, ModeList) ->
Self = self(),
Ref = make_ref(),
+ Utag = erlang:spread_utag(true),
Pid =
erlang:Spawn(
fun() ->
+ erlang:restore_utag(Utag),
%% process_flag(trap_exit, true),
case parse_options(ModeList) of
{ReadMode, UnicodeMode, Opts} ->
@@ -84,6 +86,7 @@ do_start(Spawn, Owner, FileName, ModeList) ->
exit(Reason1)
end
end),
+ erlang:restore_utag(Utag),
Mref = erlang:monitor(process, Pid),
receive
{Ref, {error, _Reason} = Error} ->