From c9275bbbed36478283f3b0d1737b4ba5583d3023 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 18 Apr 2018 17:27:41 +0900 Subject: `mrb_io_initialize_copy` should not free existing `fptr`; fix #4005 When arguments `copy` and `orig` are the same object. --- mrbgems/mruby-io/src/io.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index e11aa3300..bc17dd9dd 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -563,6 +563,7 @@ mrb_io_initialize_copy(mrb_state *mrb, mrb_value copy) mrb_get_args(mrb, "o", &orig); fptr_orig = io_get_open_fptr(mrb, orig); fptr_copy = (struct mrb_io *)DATA_PTR(copy); + if (fptr_orig == fptr_copy) return copy; if (fptr_copy != NULL) { fptr_finalize(mrb, fptr_copy, FALSE); mrb_free(mrb, fptr_copy); -- cgit v1.2.3