Issue #3558 has been updated by Asher Haig. I don't think you've understood the problem... I call rb_block_call specifying: * receiver * iteration method * block function * data object (data2) * argc * argv So my understanding (per the documentation) is that if I want only 1 object, I specify it as data2: * rb_block_call( receiver, method, argc, argv, block, data2 ) And that my callback function is then called with argc + 2 (yield and data2 values) arguments, with argv holding only the values specified in argv passed to rb_block_call. * callback_function( yield_data, data2, argc, argv ) This is not what I am getting. Instead I am getting: * callback_function( yield_data, data2, 1, & yield_data ) In other words, argc and argv are _never_ getting passed to callback_function, which seems to me quite clearly a bug. ---------------------------------------- http://redmine.ruby-lang.org/issues/show/3558 ---------------------------------------- http://redmine.ruby-lang.org