[#69892] [Ruby trunk - Feature #11339] [Open] [PATCH] io.c: avoid kwarg parsing in C API — normalperson@...
Issue #11339 has been reported by Eric Wong.
8 messages
2015/07/07
[#69983] Re: [Ruby trunk - Feature #11339] [Open] [PATCH] io.c: avoid kwarg parsing in C API
— Eric Wong <normalperson@...>
2015/07/15
normalperson@yhbt.net wrote:
[#69990] Re: [Ruby trunk - Feature #11339] [Open] [PATCH] io.c: avoid kwarg parsing in C API
— SASADA Koichi <ko1@...>
2015/07/16
On 2015/07/16 4:41, Eric Wong wrote:
[#69995] Re: [Ruby trunk - Feature #11339] [Open] [PATCH] io.c: avoid kwarg parsing in C API
— Eric Wong <normalperson@...>
2015/07/16
SASADA Koichi <ko1@atdot.net> wrote:
[#69984] $SAFE inside an Array — Bertram Scharpf <lists@...>
Hi,
4 messages
2015/07/15
[#70001] [Ruby trunk - Bug #11336] [Open] TestProcess#test_exec_fd_3_redirect failed on Solaris 10 — ngotogenome@...
Issue #11336 has been updated by Naohisa Goto.
4 messages
2015/07/16
[#70005] Re: [Ruby trunk - Bug #11336] [Open] TestProcess#test_exec_fd_3_redirect failed on Solaris 10
— Eric Wong <normalperson@...>
2015/07/16
Sorry, but I think rb_divert_reserved_fd seems a racy fix. I think the
[#70011] [Ruby trunk - Bug #11362] [Open] [PATCH] ensure Process.kill(:STOP, $$) is resumable — normalperson@...
Issue #11362 has been reported by Eric Wong.
3 messages
2015/07/17
[#70016] [Ruby trunk - Bug #11364] [Open] Use smaller buffer for sendmsg — merch-redmine@...
Issue #11364 has been reported by Jeremy Evans.
8 messages
2015/07/17
[#70052] Re: [Ruby trunk - Bug #11364] [Open] Use smaller buffer for sendmsg
— Eric Wong <normalperson@...>
2015/07/20
merch-redmine@jeremyevans.net wrote:
[#70055] Re: [Ruby trunk - Bug #11364] [Open] Use smaller buffer for sendmsg
— Jeremy Evans <code@...>
2015/07/20
On 07/20 10:46, Eric Wong wrote:
[#70056] Re: [Ruby trunk - Bug #11364] [Open] Use smaller buffer for sendmsg
— Eric Wong <normalperson@...>
2015/07/21
Jeremy Evans <code@jeremyevans.net> wrote:
[#70103] [Ruby trunk - Feature #11375] Decreased Object Allocation in Pathname.rb — richard.schneeman@...
Issue #11375 has been updated by Richard Schneeman.
3 messages
2015/07/23
[#70156] [Ruby trunk - Bug #11396] Bad performance in ruby >= 2.2 for Hash with many symbol keys — dunric29a@...
Issue #11396 has been updated by David Unric.
3 messages
2015/07/28
[ruby-core:70070] [Ruby trunk - Bug #11382] Keyword arguments randomly nullified
From:
milovan.zogovic@...
Date:
2015-07-21 15:03:52 UTC
List:
ruby-core #70070
Issue #11382 has been updated by Milovan Zogovic.
Subject changed from Keyword arguments nullified on inheritance to Keyword arguments randomly nullified
Actually, this has nothing to do with inheritance. Here is simplified example:
~~~
class Bug
def initialize(a:, b: nil, **others)
puts("a: #{a.inspect}, b: #{b.inspect}, others: #{others}")
end
end
require "yaml"
Bug.new(**YAML.load("---\n:a: A\n:b: B\n:cc: CC")) # :b gets nullified
Bug.new(**YAML.load("---\n:a: A\n:b: B\n:c: C")) # :b not nullified
~~~
----------------------------------------
Bug #11382: Keyword arguments randomly nullified
https://bugs.ruby-lang.org/issues/11382#change-53485
* Author: Milovan Zogovic
* Status: Open
* Priority: Normal
* Assignee:
* ruby -v: 2.2.2
* Backport:
----------------------------------------
Here is the example:
~~~
class Parent
def initialize(a: nil, b: nil, **properties)
puts("parent: { a: #{a.inspect}, b: #{b.inspect}, properties: #{properties}")
end
end
class Child < Parent
def initialize(args={})
puts("child: #{args}")
super
end
end
require "yaml"
Child.new(a: "A", **YAML.load("---\n:b: B\n:x: X")) # ok
Child.new(a: "A", **YAML.load("---\n:b: B\n:xx: XX")) # bug: ":a" gets nullified
~~~
The output is:
~~~
child: {:a=>"A", :b=>"B", :x=>"X"}
parent: { a: "A", b: "B", properties: {:x=>"X"}
child: {:a=>"A", :b=>"B", :xx=>"XX"}
parent: { a: "A", b: nil, properties: {:xx=>"XX"}
~~~
The only difference between first and second example is that the second one uses :xx as extra argument, while the first one uses :x.
The bug will appear randomly based on the argument name.
Also, this only happens when when the arguments are loaded from somewhere else (e.g. YAML.load).
If i put `{ b: "B", xx: "XX" }` just anywhere in the code, the bug won't happen, which is extra weird.
It works with ruby 2.1, and 2.0.
--
https://bugs.ruby-lang.org/