From: WATANABE Hirofumi Date: 1999-10-15T01:43:12+09:00 Subject: [ruby-dev:8020] [PATCH] Win32API わたなべです. INT じゃなくて ULONG に変換しないと 0x80000000 以上のときが まずいのと, 'P' を指定したときに NULL が表現できないのでそれ に対応しました. --- ext/Win32API/Win32API.c.orig Fri Aug 13 14:37:46 1999 +++ ext/Win32API/Win32API.c Fri Oct 15 01:32:31 1999 @@ -142,3 +142,3 @@ - ApiFunction = (FARPROC)NUM2INT(obj_proc); + ApiFunction = (FARPROC)NUM2ULONG(obj_proc); @@ -161,3 +161,3 @@ case _T_INTEGER: - lParam = NUM2INT(rb_ary_entry(args, i)); + lParam = NUM2ULONG(rb_ary_entry(args, i)); #if defined(_MSC_VER) || defined(__LCC__) @@ -175,5 +175,11 @@ str = rb_ary_entry(args, i); - Check_Type(str, T_STRING); - rb_str_modify(str); - pParam = RSTRING(str)->ptr; + if (NIL_P(str)) { + pParam = 0; + } else if (FIXNUM_P(str)){ + pParam = (char *)NUM2ULONG(str); + } else { + Check_Type(str, T_STRING); + rb_str_modify(str); + pParam = RSTRING(str)->ptr; + } #if defined(_MSC_VER) || defined(__LCC__)