From: "charliesome (Charlie Somerville)" Date: 2014-01-04T22:46:09+09:00 Subject: [ruby-core:59554] [ruby-trunk - Bug #9353][Open] Struct setter methods now return the struct object rather than the value Issue #9353 has been updated by charliesome (Charlie Somerville). Status changed from Closed to Open Assignee set to naruse (Yui NARUSE) % Done changed from 100 to 0 Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN to 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: REQUIRED ---------------------------------------- Bug #9353: Struct setter methods now return the struct object rather than the value https://bugs.ruby-lang.org/issues/9353#change-44092 Author: charliesome (Charlie Somerville) Status: Open Priority: Normal Assignee: naruse (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: REQUIRED ~ ruby-2.1.0 �� irb >> Struct.new(:foo).new.send(: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. -- http://bugs.ruby-lang.org/