Add more comments why CRuby uses __pioinfo

This commit is contained in:
NARUSE, Yui 2022-12-15 00:14:00 +09:00
parent 1df6d0e578
commit 9eb19a02ae

View File

@ -2584,6 +2584,18 @@ set_pioinfo_extra(void)
# define UCRTBASE "ucrtbase.dll"
# endif
/* get __pioinfo addr with _isatty */
/*
* Why Ruby depends to _pioinfo is
* * to associate socket and fd: CRuby creates fd with dummy file handle
* and set socket to emulate Unix-like behavior. Without __pioinfo
* we need something which manages the fd number allocation
* * to implement overlapped I/O for Windows 2000/XP
* * to emulate fcntl(2)
*
* see also
* * https://bugs.ruby-lang.org/issues/11118
* * https://bugs.ruby-lang.org/issues/18605
*/
char *p = (char*)get_proc_address(UCRTBASE, "_isatty", NULL);
char *pend = p;
/* _osfile(fh) & FDEV */