Skip to content

Commit

Permalink
Add more comments why CRuby uses __pioinfo
Browse files Browse the repository at this point in the history
  • Loading branch information
nurse committed Dec 14, 2022
1 parent 1df6d0e commit 9eb19a0
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions win32/win32.c
Expand Up @@ -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 */
Expand Down

0 comments on commit 9eb19a0

Please sign in to comment.