diff options
| -rw-r--r-- | internal.h | 2 | ||||
| -rw-r--r-- | io.c | 25 |
2 files changed, 22 insertions, 5 deletions
diff --git a/internal.h b/internal.h index 85370ec0d7..6cab3d4ffd 100644 --- a/internal.h +++ b/internal.h @@ -1348,6 +1348,8 @@ VALUE rb_io_flush_raw(VALUE, int); size_t rb_io_memsize(const rb_io_t *); #endif int rb_stderr_tty_p(void); +void rb_io_fptr_finalize_internal(void *ptr); +#define rb_io_fptr_finalize rb_io_fptr_finalize_internal /* load.c */ VALUE rb_get_load_path(void); @@ -4629,21 +4629,36 @@ clear_codeconv(rb_io_t *fptr) clear_writeconv(fptr); } -int -rb_io_fptr_finalize(rb_io_t *fptr) +void +rb_io_fptr_finalize_internal(void *ptr) { - if (!fptr) return 0; + rb_io_t *fptr = ptr; + + if (!ptr) return; fptr->pathv = Qnil; if (0 <= fptr->fd) - rb_io_fptr_cleanup(fptr, TRUE); + rb_io_fptr_cleanup(fptr, TRUE); fptr->write_lock = 0; free_io_buffer(&fptr->rbuf); free_io_buffer(&fptr->wbuf); clear_codeconv(fptr); free(fptr); - return 1; } +#undef rb_io_fptr_finalize +int +rb_io_fptr_finalize(rb_io_t *fptr) +{ + if (!fptr) { + return 0; + } + else { + rb_io_fptr_finalize_internal(fptr); + return 1; + } +} +#define rb_io_fptr_finalize(fptr) rb_io_fptr_finalize_internal(fptr) + RUBY_FUNC_EXPORTED size_t rb_io_memsize(const rb_io_t *fptr) { |
