From e5056d058a69def0d2a42d0e8602f8d41ec60315 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 18 Dec 2017 11:48:28 +0900 Subject: Fix `fptr` leakage; ref #3903 --- mrbgems/mruby-io/src/io.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index fc81f57cc..65185c789 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -566,6 +566,9 @@ mrb_io_initialize_copy(mrb_state *mrb, mrb_value copy) fptr_copy = (struct mrb_io *)mrb_io_alloc(mrb); fptr_orig = io_get_open_fptr(mrb, orig); + DATA_TYPE(copy) = &mrb_io_type; + DATA_PTR(copy) = fptr_copy; + buf = mrb_iv_get(mrb, orig, mrb_intern_cstr(mrb, "@buf")); mrb_iv_set(mrb, copy, mrb_intern_cstr(mrb, "@buf"), buf); @@ -577,9 +580,6 @@ mrb_io_initialize_copy(mrb_state *mrb, mrb_value copy) fptr_copy->sync = fptr_orig->sync; fptr_copy->is_socket = fptr_orig->is_socket; - DATA_TYPE(copy) = &mrb_io_type; - DATA_PTR(copy) = fptr_copy; - return copy; } -- cgit v1.2.3