From: shyouhei@... Date: 2016-12-21T06:07:52+00:00 Subject: [ruby-core:78757] [Ruby trunk Bug#12907][Assigned] rb_respond_to() return value is incorrect 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 # 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: