Issue #11970 has been reported by Davis Wahl.

----------------------------------------
Bug #11970: Multiple Assignment Into a Hash with Destructuring causes segfault
https://bugs.ruby-lang.org/issues/11970

* Author: Davis Wahl
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
# Segfaults in 2.2.3 and 2.3.0, In 2.1.0 and below, produces {[:foo]=>:bar}

foo = [:foo]
bar = [:bar]

h = {}
h[*foo], _tail = *bar # Segfault

# Using hash assignment/destructuring in this way may very well be undefined. I am surprised that the hash key h[*foo] destructures in later examples, but I'm not really sure what the behavior should be. A number of similar constructs
# produce consistent behavior, which leads me to believe the above syntax should work (or at least not segfault).

# Below examples produce the same output in ruby 1.9.3, 2.1.0, 2.2.3, and 2.3.0

h = {}
h[:foo], _tail = *bar
puts h
# => {:foo => :bar}

h = {}
h[foo[0]], _tail = *bar
puts h
# => {:foo => :bar}

h = {}
h[*foo] = :bar
puts h
# => {:foo => :bar}

# Rubies Tested:
# ruby 1.9.3p550 (2014-10-27 revision 48165) [x86_64-linux]
# ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
# ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
# ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

---Files--------------------------------
dump (12.4 KB)


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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>