Issue #9353 has been updated by Yui NARUSE.

Backport changed from 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: REQUIRED to 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: DONE

----------------------------------------
Bug #9353: Struct setter methods now return the struct object rather than the value
https://bugs.ruby-lang.org/issues/9353#change-45256

* Author: Charlie Somerville
* Status: Open
* Priority: Normal
* Assignee: Yui NARUSE
* Category: 
* Target version: 
* ruby -v: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin13.0]
* Backport: 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: DONE
----------------------------------------
~ ruby-2.1.0  irb
>> Struct.new(:foo).new.send(:foo=, 123)
=> #<struct  foo=123>

~ ruby-2.0.0-p247  irb
>> Struct.new(:foo).new.send(:foo=, 123)
=> 123

This looks like a regression introduced by r41534, where rb_struct_set was changed:

-            return ptr[i] = val;
+            return RSTRUCT_SET(obj, i, val);

The RSTRUCT_SET macro was introduced in this commit, but it returns obj, not val.

I have attached a patch fixing this issue.

---Files--------------------------------
rb_struct_set-regression.patch (437 Bytes)


-- 
http://bugs.ruby-lang.org/