[#78633] ruby/spec needs help from CRuby committers — Benoit Daloze <eregontp@...>

Currently, ruby/spec is maintained mostly by individuals and enjoys the

13 messages 2016/12/13

[ruby-core:78757] [Ruby trunk Bug#12907][Assigned] rb_respond_to() return value is incorrect

From: shyouhei@...
Date: 2016-12-21 06:07:52 UTC
List: ruby-core #78757
Issue #12907 has been updated by Shyouhei Urabe.

Status changed from Open to Assigned
Assignee set to Tomoyuki Chikanaga

Chikanaga-san please handle this because it seems 2.3 only.

----------------------------------------
Bug #12907: rb_respond_to() return value is incorrect
https://bugs.ruby-lang.org/issues/12907#change-62155

* Author: Peter Ohler
* Status: Assigned
* Priority: Normal
* Assignee: Tomoyuki Chikanaga
* Target version: 
* ruby -v: 2.3.0-3
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
As of Ruby 2.3.0 rb_respond_to incorrectly reports non-zero for methods that are not supported. This occurs with subclasses of BasicObject. This occurs with Oj when but should occur with other C code. A simple sample that demonstrates the failure in below. It works fine on all versions of Ruby until 2.3.0.

    require 'oj'
    
    class A < BasicObject
      def initialize(data)
        @data = data
      end
    end
    
    a = A.new("xyz")
    
    json = Oj.dump(a, mode: :compat, use_to_json: true)
    #=> NoMethodError: undefined method `to_hash' for #<A:0x007fae03de1dc8>

In the C code the rb_respond_to() function is called to determine if an instance of A responds to "to_hash". 1 is returned in Ruby 2.3.x while previous versions correctly returned 0.



-- 
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>

In This Thread

Prev Next