FFI::Enum Ruby class in Enum.java not taken into account
--------------------------------------------------------
Key: JRUBY-5956
URL: https://jira.codehaus.org/browse/JRUBY-5956
Project: JRuby
Issue Type: Bug
Components: Ruby 1.9.3
Affects Versions: JRuby 1.6.3
Environment: OpenVMS IA64. JRuby 1.6.3 modified and built using Ant
Reporter: Philippe Vouters
Assignee: Thomas E Enebo
Fix For: JRuby 1.6.4
PHV:[PHV.jruby_vms.jruby-1^.6^.3.lib.ruby.site_ruby.shared.ffi]enum.rb;2 has
been SFTP transferred from
/usr/local/lib/ruby/gems/1.9.1/gems/ffi-1.0.5/lib/ffi/enum.rb on my Linux
computer to jruby_vms/jruby-1.6.3/lib/ruby/site_ruby/shared/ffi on the OpenVMS
IA64 computer.
Now 3 versions of enum.rb are found in two different directories.
$ dire [...]enum.rb
Directory PHV:[PHV.jruby_vms.jruby-1^.6^.3.build.jar-complete.META-INF.jruby^.ho
me.lib.ruby.site_ruby.shared.ffi]
enum.rb;1
Total of 1 file.
Directory PHV:[PHV.jruby_vms.jruby-1^.6^.3.lib.ruby.site_ruby.shared.ffi]
enum.rb;2 enum.rb;1
Total of 2 files.
Grand total of 2 directories, 3 files.
$ jruby --1.9 DECC_test.rb foo bar
Hello, World!
Argument 0: FOO
Argument 1: BAR
$ type DECC_test.rb
require 'ffi'
require 'ffi/platform'
module Portablelibc
extend FFI::Library
if FFI::Platform.openvms?
libc = "DECC$SHR"
else
libc = "c"
end
ffi_lib libc
if FFI::Platform.openvms?
attach_function :printf, :"decc$txprintf", [:string, :varargs], :int
else
attach_function :printf, [:string, :varargs], :int
end
end
Portablelibc.printf("Hello, World!\n")
if ARGV.length > 1
ARGV.length.times do |i|
Portablelibc.printf("Argument %d: %s\n", :int, i, :string, ARGV[i])
end
end
$ rename PHV:[PHV.jruby_vms.jruby-1^.6^.3.lib.ruby.site_ruby.shared.ffi]enum.rb;
2 enum.rb.save
$ dire [...]enum.rb
Directory PHV:[PHV.jruby_vms.jruby-1^.6^.3.build.jar-complete.META-INF.jruby^.ho
me.lib.ruby.site_ruby.shared.ffi]
enum.rb;1
Total of 1 file.
Directory PHV:[PHV.jruby_vms.jruby-1^.6^.3.lib.ruby.site_ruby.shared.ffi]
enum.rb;1
Total of 1 file.
Grand total of 2 directories, 2 files.
$ jruby --1.9 DECC_test.rb foo bar
LoadError: load error: ffi/enum -- java.lang.NullPointerException: null
require at org/jruby/RubyKernel.java:1047
require at /PHV/PHV/jruby_vms/jruby-1.6.3//lib/ruby/site_ruby/1.8/rubygems/cus
tom_require.rb:29
(root) at /PHV/PHV/jruby_vms/jruby-1.6.3//lib/ruby/site_ruby/shared/ffi/ffi.r
b:81
require at org/jruby/RubyKernel.java:1047
require at /PHV/PHV/jruby_vms/jruby-1.6.3//lib/ruby/site_ruby/shared/ffi/ffi.r
b:29
(root) at /PHV/PHV/jruby_vms/jruby-1.6.3//lib/ruby/site_ruby/shared/ffi.rb:1
require at org/jruby/RubyKernel.java:1047
require at /PHV/PHV/jruby_vms/jruby-1.6.3//lib/ruby/site_ruby/shared/ffi.rb:29
(root) at DECC_TEST.RB:1
$ jruby --1.8 DECC_test.rb foo bar
Hello, World!
Argument 0: FOO
Argument 1: BAR
In consequence, either Ruby's 1.9.2 enum.rb file is missing in JRuby 1.6.3 or
jruby-1.6.3/src/org/jruby/ext/ffi/Enum.java is not taken into account when the
Ruby code contains require 'ffi/ffi' and is executed under 1.9 compatibility.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email