summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-01-02 03:32:45 +0100
committerAraq <rumpf_a@web.de>2015-01-02 03:32:45 +0100
commit194b14a1827e5c812e5a149070ddebc27a2966f2 (patch)
tree37ec7f8a1332159ab0552142a84901b34a1c984a /lib
parentaa8073627faadbda8c51c32a88a797ce83c1ef69 (diff)
downloadNim-194b14a1827e5c812e5a149070ddebc27a2966f2.tar.gz
fixes #1816
Diffstat (limited to 'lib')
-rw-r--r--lib/system/channels.nim7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/system/channels.nim b/lib/system/channels.nim
index 3e5ca0795..d07d6eae1 100644
--- a/lib/system/channels.nim
+++ b/lib/system/channels.nim
@@ -232,9 +232,10 @@ proc tryRecv*[TMsg](c: var TChannel[TMsg]): tuple[dataAvailable: bool,
   ## it returns ``(false, default(msg))``.

   var q = cast[PRawChannel](addr(c))

   if q.mask != ChannelDeadMask:

-    if tryAcquireSys(q.lock):

-      llRecv(q, addr(result.msg), cast[PNimType](getTypeInfo(result.msg)))

-      result.dataAvailable = true

+    if tryAcquireSys(q.lock):
+      if q.count > 0:

+        llRecv(q, addr(result.msg), cast[PNimType](getTypeInfo(result.msg)))

+        result.dataAvailable = true

       releaseSys(q.lock)

 

 proc peek*[TMsg](c: var TChannel[TMsg]): int =