Hi,

At Tue, 22 Aug 2006 22:14:38 +0900,
<noreply / rubyforge.org> 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