From: nobu@... Date: 2006-08-22T23:39:28+09:00 Subject: Re: [ ruby-Bugs-5489 ] Duplicate Win32API class declarations Hi, At Tue, 22 Aug 2006 22:14:38 +0900, wrote in [ruby-core:08678]: > The following code raises ArgumentError "1 arguments are > needed" when invoked with 'dl/win32': > > require 'Win32API' > #require 'dl/win32' > > sle = Win32API.new('kernel32', 'SetLastError', 'L', 'V') > gle = Win32API.new('kernel32', 'GetLastError', 'V', 'L') > sle.call(2) > puts gle.call() Thank you for the report. Index: ext/dl/lib/dl/win32.rb =================================================================== RCS file: /pub/cvs/ruby/src/ruby/ext/dl/lib/dl/Attic/win32.rb,v retrieving revision 1.4 diff -U 2 -p -u -r1.4 win32.rb --- ext/dl/lib/dl/win32.rb 20 Jan 2003 10:22:04 -0000 1.4 +++ ext/dl/lib/dl/win32.rb 22 Aug 2006 14:36:08 -0000 @@ -7,5 +7,6 @@ class Win32API def initialize(dllname, func, import, export = "0") - prototype = (export + import.to_s).tr("VPpNnLlIi", "0SSI") + import = import.to_s.sub(/\AV\z/, '') + prototype = (export + import).tr("VPpNnLlIi", "0SSI") handle = DLL[dllname] ||= DL::Handle.new(dllname) @sym = handle.sym(func, prototype) -- Nobu Nakada