From 868cdb9f8bf28117b0c70f34a9b8eb0d794457cd Mon Sep 17 00:00:00 2001 From: Calvin Rose Date: Sat, 4 Dec 2021 10:28:00 -0600 Subject: [PATCH] Fix channel packing bug. --- src/core/ev.c | 2 +- test/suite0011.janet | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/core/ev.c b/src/core/ev.c index 05317e9b..1f10ec5c 100644 --- a/src/core/ev.c +++ b/src/core/ev.c @@ -620,7 +620,7 @@ static int janet_chan_unpack(JanetChannel *chan, Janet *x, int is_cleanup) { return 1; case JANET_BUFFER: { JanetBuffer *buf = janet_unwrap_buffer(*x); - int flags = is_cleanup ? JANET_MARSHAL_UNSAFE : (JANET_MARSHAL_UNSAFE | JANET_MARSHAL_DECREF); + int flags = is_cleanup ? (JANET_MARSHAL_UNSAFE | JANET_MARSHAL_DECREF) : JANET_MARSHAL_UNSAFE; *x = janet_unmarshal(buf->data, buf->count, flags, NULL, NULL); janet_buffer_deinit(buf); janet_free(buf); diff --git a/test/suite0011.janet b/test/suite0011.janet index d8289004..f55f4271 100644 --- a/test/suite0011.janet +++ b/test/suite0011.janet @@ -27,5 +27,14 @@ (assert (< 2605.1158 (math/log-gamma 500) 2605.1159) "math/log-gamma") +(def ch (ev/thread-chan 2)) +(def att (ev/thread-chan 109)) +(assert att "`att` was nil after creation") +(ev/give ch att) +(ev/do-thread + (print "started thread") + (assert (ev/take ch) "channel packing bug for threaded abstracts on threaded channels.")) +(print "done") + (end-suite)