[ruby-core:64129] [ruby-trunk - Bug #9353] [Closed] Struct setter methods now return the struct object rather than the value

From: naruse@...
Date: 2014-07-31 01:08:57 UTC
List: ruby-core #64129
Issue #9353 has been updated by Yui NARUSE.

Status changed from Open to Closed

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

* Author: Charlie Somerville
* Status: Closed
* Priority: Normal
* Assignee: Yui NARUSE
* Category:=20
* Target version:=20
* 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 =CE=BB irb
>> Struct.new(:foo).new.send(:foo=3D, 123)
=3D> #<struct  foo=3D123>

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

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

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

The RSTRUCT_SET macro was introduced in this commit, but it returns obj, no=
t val.

I have attached a patch fixing this issue.

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


--=20
https://bugs.ruby-lang.org/

In This Thread

Prev Next