Skip to content

Commit cba54bd

Browse files
karlssonlpil
authored andcommitted
Revert process.send function to previous implementation
1 parent d0dc2ff commit cba54bd

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

src/gleam/erlang/process.gleam

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@ pub fn subject_owner(subject: Subject(message)) -> Pid {
7878
subject.owner
7979
}
8080

81+
type DoNotLeak
82+
83+
@external(erlang, "erlang", "send")
84+
fn raw_send(a: Pid, b: message) -> DoNotLeak
85+
8186
/// Send a message to a process using a `Subject`. The message must be of the
8287
/// type that the `Subject` accepts.
8388
///
@@ -102,8 +107,10 @@ pub fn subject_owner(subject: Subject(message)) -> Pid {
102107
/// send(subject, "Hello, Joe!")
103108
/// ```
104109
///
105-
@external(erlang, "gleam_erlang_ffi", "send")
106-
pub fn send(subject: Subject(message), message: message) -> Nil
110+
pub fn send(subject: Subject(message), message: message) -> Nil {
111+
raw_send(subject.owner, #(subject.tag, message))
112+
Nil
113+
}
107114

108115
/// Receive a message that has been sent to current process using the `Subject`.
109116
///

src/gleam_erlang_ffi.erl

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
map_selector/2, merge_selector/2, flush_messages/0,
99
priv_directory/1, connect_node/1, register_process/2, unregister_process/1,
1010
process_named/1, identity/1, pid_from_dynamic/1, reference_from_dynamic/1,
11-
port_from_dynamic/1, 'receive'/1, 'receive'/2, send/2
11+
port_from_dynamic/1, 'receive'/1, 'receive'/2
1212
]).
1313

1414
-spec atom_from_string(binary()) -> {ok, atom()} | {error, atom_not_loaded}.
@@ -161,10 +161,6 @@ select({selector, Handlers}, Timeout) ->
161161
{error, nil}
162162
end.
163163

164-
send({subject, Pid, Ref}, Message) ->
165-
Pid ! {Ref, Message},
166-
nil.
167-
168164
demonitor({_, Reference}) ->
169165
erlang:demonitor(Reference, [flush]).
170166

0 commit comments

Comments
 (0)