diff options
-rw-r--r-- | io.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -6201,12 +6201,14 @@ fptr_copy_finalizer(rb_io_t *fptr, const rb_io_t *orig) { #if defined(__CYGWIN__) || !defined(HAVE_WORKING_FORK) void (*const old_finalize)(struct rb_io_t*,int) = fptr->finalize; + + if (old_finalize == fptr->finalize) return; #endif fptr->finalize = orig->finalize; #if defined(__CYGWIN__) || !defined(HAVE_WORKING_FORK) - if (old_finalize == pipe_finalize) { + if (old_finalize != pipe_finalize) { struct pipe_list *list; for (list = pipe_list; list; list = list->next) { if (list->fptr == fptr) break; |