summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-io/src/io.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-12-18 11:48:28 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-12-18 11:55:12 +0900
commite5056d058a69def0d2a42d0e8602f8d41ec60315 (patch)
treecf880bd331a2099260da1b74f3f4d7e5db749883 /mrbgems/mruby-io/src/io.c
parent83d02bcd5ad73d4cc493b43500f0eb4c4eccdb74 (diff)
downloadmruby-e5056d058a69def0d2a42d0e8602f8d41ec60315.tar.gz
mruby-e5056d058a69def0d2a42d0e8602f8d41ec60315.zip
Fix `fptr` leakage; ref #3903
Diffstat (limited to 'mrbgems/mruby-io/src/io.c')
-rw-r--r--mrbgems/mruby-io/src/io.c6
1 files 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;
}