diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-04-18 17:27:41 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-04-18 17:27:41 +0900 |
| commit | c9275bbbed36478283f3b0d1737b4ba5583d3023 (patch) | |
| tree | 0d70b4d60956d612b55efaedbd3de90ade322fb7 /mrbgems/mruby-io | |
| parent | 05db341ef5454ba5bbf613f7f84890fd16c9d532 (diff) | |
| download | mruby-c9275bbbed36478283f3b0d1737b4ba5583d3023.tar.gz mruby-c9275bbbed36478283f3b0d1737b4ba5583d3023.zip | |
`mrb_io_initialize_copy` should not free existing `fptr`; fix #4005
When arguments `copy` and `orig` are the same object.
Diffstat (limited to 'mrbgems/mruby-io')
| -rw-r--r-- | mrbgems/mruby-io/src/io.c | 1 |
1 files changed, 1 insertions, 0 deletions
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); |
