From 5903b11520719ac57b569559064b726e12a52550 Mon Sep 17 00:00:00 2001 From: usa Date: Fri, 30 Oct 2009 04:15:54 +0000 Subject: * win32.c (recvmsg, sendmsg, link): shouldn't raise ruby's exceptions in the functions expected as system API. see [ruby-dev:39579] and [ruby-dev:39582] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25569 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ win32/win32.c | 28 +++++++++++++++++++++++----- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5c7f14f92..5caeb2502 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Fri Oct 30 13:13:16 2009 NAKAMURA Usaku + + * win32.c (recvmsg, sendmsg, link): shouldn't raise ruby's exceptions + in the functions expected as system API. see [ruby-dev:39579] and + [ruby-dev:39582] + Fri Oct 30 12:59:20 2009 NAKAMURA Usaku * thread.c (rb_thread_blocking_region): standard C doesn't accept diff --git a/win32/win32.c b/win32/win32.c index 35b52df1d..d87a65e5e 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -2868,8 +2868,10 @@ recvmsg(int fd, struct msghdr *msg, int flags) DWORD dmy; WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &guid, sizeof(guid), &pWSARecvMsg, sizeof(pWSARecvMsg), &dmy, NULL, NULL); - if (!pWSARecvMsg) - rb_notimplement(); + if (!pWSARecvMsg) { + errno = ENOSYS; + return -1; + } } msghdr_to_wsamsg(msg, &wsamsg); @@ -2959,8 +2961,10 @@ sendmsg(int fd, const struct msghdr *msg, int flags) DWORD dmy; WSAIoctl(s, SIO_GET_EXTENSION_FUNCTION_POINTER, &guid, sizeof(guid), &pWSASendMsg, sizeof(pWSASendMsg), &dmy, NULL, NULL); - if (!pWSASendMsg) - rb_notimplement(); + if (!pWSASendMsg) { + errno = ENOSYS; + return -1; + } } msghdr_to_wsamsg(msg, &wsamsg); @@ -3707,7 +3711,7 @@ link(const char *from, const char *to) if (hKernel) { pCreateHardLink = (BOOL (WINAPI *)(LPCTSTR, LPCTSTR, LPSECURITY_ATTRIBUTES))GetProcAddress(hKernel, "CreateHardLinkA"); if (!pCreateHardLink) { - rb_notimplement(); + myerrno = ENOSYS; } } else { @@ -5249,3 +5253,17 @@ rb_w32_fsopen(const char *path, const char *mode, int shflags) return f; } #endif + +#if defined(_MSC_VER) && RT_VER <= 60 +extern long _ftol(double); +long +_ftol2(double d) +{ + return _ftol(d); +} +long +_ftol2_sse(double d) +{ + return _ftol(d); +} +#endif -- cgit