diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-12-18 11:48:28 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-12-18 11:55:12 +0900 |
| commit | e5056d058a69def0d2a42d0e8602f8d41ec60315 (patch) | |
| tree | cf880bd331a2099260da1b74f3f4d7e5db749883 | |
| parent | 83d02bcd5ad73d4cc493b43500f0eb4c4eccdb74 (diff) | |
| download | mruby-e5056d058a69def0d2a42d0e8602f8d41ec60315.tar.gz mruby-e5056d058a69def0d2a42d0e8602f8d41ec60315.zip | |
Fix `fptr` leakage; ref #3903
| -rw-r--r-- | mrbgems/mruby-io/src/io.c | 6 |
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; } |
