Array#reject Does Not Retain Instance Variables -----------------------------------------------
Key: JRUBY-5245 URL: http://jira.codehaus.org/browse/JRUBY-5245 Project: JRuby Issue Type: Bug Components: Core Classes/Modules Affects Versions: JRuby 1.5.6 Environment: Mac OS X 10.6.5, JRuby 1.5.6 as installed by RVM Reporter: Paul Mucur Priority: Minor Attachments: array_reject_test.rb Setting an instance variable on an array and then using Array#reject will cause the returned array to lose its state: In C Ruby: $ irb ruby-1.8.7-p302 > a = [] => [] ruby-1.8.7-p302 > a.instance_variable_set("@name", "Bob") => "Bob" ruby-1.8.7-p302 > a.reject {}.instance_variable_get("@name") => "Bob" In JRuby: L3922:~ (jruby-1.5.6) $ irb a = [jruby-1.5.6 > a = [] => [] jruby-1.5.6 > a.instance_variable_set("@name", "Bob") => "Bob" jruby-1.5.6 > a.reject {}.instance_variable_get("@name") => nil Note that the same doesn't apply for Enumerable#find_all which returns a new array populated with matching elements rather than copying the original array and deleting matching elements. Simply #duping the array seems to work fine however: jruby-1.5.6 > a.dup.instance_variable_get("@name") => "Bob" This came up due to will_paginate's storing of a @total_pages variable on an array which would be set to nil upon using #reject. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - 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