diff --git a/lib/system/channels.nim b/lib/system/channels.nim index d51659394dbb1..65398d65c27d0 100644 --- a/lib/system/channels.nim +++ b/lib/system/channels.nim @@ -367,7 +367,8 @@ proc sendImpl(q: PRawChannel, typ: PNimType, msg: pointer, noBlock: bool): bool proc send*[TMsg](c: var Channel[TMsg], msg: sink TMsg) {.inline.} = ## Sends a message to a thread. `msg` is deeply copied. discard sendImpl(cast[PRawChannel](addr c), cast[PNimType](getTypeInfo(msg)), unsafeAddr(msg), false) - wasMoved(msg) + when defined(gcDestructors): + wasMoved(msg) proc trySend*[TMsg](c: var Channel[TMsg], msg: sink TMsg): bool {.inline.} = ## Tries to send a message to a thread. @@ -377,8 +378,9 @@ proc trySend*[TMsg](c: var Channel[TMsg], msg: sink TMsg): bool {.inline.} = ## Returns `false` if the message was not sent because number of pending items ## in the channel exceeded `maxItems`. result = sendImpl(cast[PRawChannel](addr c), cast[PNimType](getTypeInfo(msg)), unsafeAddr(msg), true) - if result: - wasMoved(msg) + when defined(gcDestructors): + if result: + wasMoved(msg) proc llRecv(q: PRawChannel, res: pointer, typ: PNimType) = q.ready = true