diff options
Diffstat (limited to 'io_buffer.c')
-rw-r--r-- | io_buffer.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/io_buffer.c b/io_buffer.c index a97c687239..d2a12b98fb 100644 --- a/io_buffer.c +++ b/io_buffer.c @@ -279,7 +279,12 @@ rb_io_buffer_type_for(VALUE klass, VALUE string) rb_str_locktmp(string); - io_buffer_initialize(data, RSTRING_PTR(string), RSTRING_LEN(string), RB_IO_BUFFER_EXTERNAL, string); + enum rb_io_buffer_flags flags = RB_IO_BUFFER_EXTERNAL; + + if (RB_OBJ_FROZEN(string)) + flags |= RB_IO_BUFFER_IMMUTABLE; + + io_buffer_initialize(data, RSTRING_PTR(string), RSTRING_LEN(string), flags, string); return instance; } |