From: Koji Oda Date: 1999-12-27T14:48:18+09:00 Subject: [ruby-list:19915] Re: [mswin32] TCPSocket::new() raises Errno::ENOENT 小田@QNES です。 ありがとうございます。 1000 ぐらいまでの動作を確認しました。 最終的な 1.4.3 からの差分を付けておきます。 --- On Mon, 27 Dec 1999 13:27:46 +0900 [[ruby-list:19908] Re: [mswin32] TCPSocket::new() raises Errno::ENOENT] Katsuyuki Komatsu wrote: > 小松です。 > ||fclose を置き換えてしまうと、File I/O 全般に影響が出そうな > ||気がします。 > | > |そうなんですよね。 > |ですので、struct OpenFileを変更する方で週末に作り直そうと思っています。 > |# しかし、fclose()でCloseHandle()させないような手段があるのか? > > 最終的に、struct OpenFileはさわらずに、以下のext/socket/socket.cと > win32/win32.cの変更で十分でした。 --- ext/socket/socket.c.org Wed Dec 08 01:47:18 1999 +++ ext/socket/socket.c Mon Dec 27 14:21:14 1999 @@ -93,17 +93,15 @@ OpenFile *fptr; { SOCKET s; - extern int errno; if (!fptr->f) return; - myfdclose(fptr->f); - if(fptr->f2) myfdclose(fptr->f); -/* s = get_osfhandle(fileno(fptr->f)); - closesocket(s); -*/ + myfdclose(fptr->f); + if(fptr->f2) myfdclose(fptr->f2); + closesocket(s); } + #endif static VALUE --- win32/win32.c.org Tue Nov 09 12:57:28 1999 +++ win32/win32.c Mon Dec 27 14:40:38 1999 @@ -1660,6 +1660,7 @@ void myfdclose(FILE *fp) { + _free_osfhnd(fileno(fp)); fclose(fp); }