summaryrefslogtreecommitdiff
path: root/ext/fiddle/function.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/fiddle/function.c')
-rw-r--r--ext/fiddle/function.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/ext/fiddle/function.c b/ext/fiddle/function.c
index d15a54bfa6..b6a105abe1 100644
--- a/ext/fiddle/function.c
+++ b/ext/fiddle/function.c
@@ -53,8 +53,13 @@ function_memsize(const void *p)
}
const rb_data_type_t function_data_type = {
- "fiddle/function",
- {0, deallocate, function_memsize,},
+ .wrap_struct_name = "fiddle/function",
+ .function = {
+ .dmark = 0,
+ .dfree = deallocate,
+ .dsize = function_memsize
+ },
+ .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
};
static VALUE
@@ -378,9 +383,10 @@ function_call(int argc, VALUE argv[], VALUE self)
{
int errno_keep = errno;
#if defined(_WIN32)
+ DWORD error = WSAGetLastError();
int socket_error = WSAGetLastError();
rb_funcall(mFiddle, rb_intern("win32_last_error="), 1,
- INT2NUM(errno_keep));
+ ULONG2NUM(error));
rb_funcall(mFiddle, rb_intern("win32_last_socket_error="), 1,
INT2NUM(socket_error));
#endif
@@ -487,4 +493,3 @@ Init_fiddle_function(void)
*/
rb_define_method(cFiddleFunction, "initialize", initialize, -1);
}
-/* vim: set noet sws=4 sw=4: */