From 48324dd4db07f505fc7f645b3102483891abe47f Mon Sep 17 00:00:00 2001 From: normal Date: Thu, 6 Dec 2018 10:09:30 +0000 Subject: io.c (io_write_nonblock): add RB_GC_GUARD, io_fflush may switch threads Since io_fflush may block on mutex or rb_io_wait_readable and switch threads, we need to ensure the `str' VALUE returned by `rb_obj_as_string` is visible to GC. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66242 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- io.c | 1 + 1 file changed, 1 insertion(+) (limited to 'io.c') diff --git a/io.c b/io.c index 1a22d34c50..442bf52e40 100644 --- a/io.c +++ b/io.c @@ -3001,6 +3001,7 @@ io_write_nonblock(VALUE io, VALUE str, VALUE ex) rb_io_set_nonblock(fptr); n = write(fptr->fd, RSTRING_PTR(str), RSTRING_LEN(str)); + RB_GC_GUARD(str); if (n < 0) { int e = errno; -- cgit v1.2.3