diff options
Diffstat (limited to 'ext/fiddle/function.c')
-rw-r--r-- | ext/fiddle/function.c | 13 |
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: */ |