aboutsummaryrefslogblamecommitdiffstats
path: root/lib/dialyzer/test/race_SUITE_data/src/whereis_diff_vars_race.erl
blob: 90791de1b2e65d7063d8c115d4808d29a62cf8c9 (plain) (tree)
1
2
                                                                        
                                                                        
















                                                                 
%% This tests that the race condition detection between whereis/register
%% is robust even when the functions are called with different variables
%% as arguments.

-module(whereis_diff_vars_race).
-export([test/2]).

test(AnAtom, AnotherAtom) ->
  Fun = fun () -> foo end,
  {aux(AnAtom, AnotherAtom, Fun), aux(AnotherAtom, AnAtom, Fun)}.

aux(Atom1, Atom2, Fun) ->
  case whereis(Atom1) of
    undefined ->
      Pid = spawn(Fun),
      register(Atom2, Pid);
    P when is_pid(P) ->
      ok
  end.