*** io.c~ Wed Sep 07 23:43:10 2011 --- io.c Mon Nov 07 20:52:34 2011 *************** io_fflush(rb_io_t *fptr) *** 684,694 **** return -1; rb_io_check_closed(fptr); } - #ifdef _WIN32 - if (GetFileType((HANDLE)rb_w32_get_osfhandle(fptr->fd)) == FILE_TYPE_DISK) { - fsync(fptr->fd); - } - #endif return 0; } --- 684,689 ---- *************** rb_io_flush(VALUE io) *** 1067,1072 **** --- 1062,1072 ---- if (fptr->mode & FMODE_WRITABLE) { if (io_fflush(fptr) < 0) rb_sys_fail(0); + #ifdef _WIN32 + if (GetFileType((HANDLE)rb_w32_get_osfhandle(fptr->fd)) == FILE_TYPE_DISK) { + fsync(fptr->fd); + } + #endif } if (fptr->mode & FMODE_READABLE) { io_unread(fptr); *************** rb_io_rewind(VALUE io) *** 1199,1204 **** --- 1199,1209 ---- GetOpenFile(io, fptr); if (io_seek(fptr, 0L, 0) < 0 && errno) rb_sys_fail_path(fptr->pathv); + #ifdef _WIN32 + if (GetFileType((HANDLE)rb_w32_get_osfhandle(fptr->fd)) == FILE_TYPE_DISK) { + fsync(fptr->fd); + } + #endif if (io == ARGF.current_file) { ARGF.lineno -= fptr->lineno; }