mrb_io_initialize_copy should not free existing fptr; fix #4005

When arguments `copy` and `orig` are the same object.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2018-04-18 17:27:41 +09:00
parent 05db341ef5
commit c9275bbbed
+1
View File
@@ -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);