Оба аргумента для rb_ary_push
должны иметь тип VALUE
, но вы нажимаете int
(возможно):
VALUE
rb_ary_push(VALUE ary, VALUE item)
{
rb_ary_modify(ary);
return rb_ary_push_1(ary, item);
}
Попробуйте это:
rb_ary_push(rStraightCards, INT2NUM(i));
Я думаю, что стоит отметить, что VALUE
обычно определяется следующим образом:
typedef uintptr_t VALUE;
Так что обычные предупреждающие флаги для преобразований типа int в указатель не отлавливают такого рода ошибки.