From: nobu@... Date: 2020-08-12T02:42:30+00:00 Subject: [ruby-core:99562] [Ruby master Bug#17108] error: initialization of ‘long unsigned int’ from ‘void *’ makes integer from pointer without a cast Issue #17108 has been updated by nobu (Nobuyoshi Nakada). Status changed from Open to Rejected Description updated `rb_funcall` expects a list of `VALUE`s after the number of arguments. I think you'll want to write: ```C MQ_INT arity = VAL2INT(rb_funcall(val,NS(id_arity),0)); ``` or use `rb_funcallv` instead of `rb_funcall`: ```C MQ_INT arity = VAL2INT(rb_funcallv(val,NS(id_arity),0,NULL)); ``` ---------------------------------------- Bug #17108: error: initialization of ���long unsigned int��� from ���void *��� makes integer from pointer without a cast https://bugs.ruby-lang.org/issues/17108#change-87026 * Author: aotto1968 (Andreas Otto) * Status: Rejected * Priority: Normal * ruby -v: ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux-gnu] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- Hi, it seems that the "OPTIMIZATION" macro for "rb_funcall" make something "bad" ``` || CC rubymsgque_la-misc_ruby.lo || .../misc_ruby.c: In function ���rubymsgque_OtCheckCallable���: .../misc_ruby.c|430 col 18| error: initialization of ���long unsigned int��� from ���void *��� makes integer from pointer without a cast [-Werror=int-conversion] || MQ_INT arity = VAL2INT(rb_funcall(val,NS(id_arity),0,NULL)); || ^~~~~~~ .../misc_ruby.c|430 col 18| note: (near initialization for ���rb_funcall_args[0]���) || cc1: all warnings being treated as errors MQ_INT arity = VAL2INT(rb_funcall(val,NS(id_arity),0,NULL)); #define VAL2INT(val) (MQ_INT)NUM2INT(val) ID NS(id_arity); #if defined(__GNUC__) && defined(HAVE_VA_ARGS_MACRO) && defined(__OPTIMIZE__) # define rb_yield_values(argc, ...) \ __extension__({ \ const int rb_yield_values_argc = (argc); \ const VALUE rb_yield_values_args[] = {__VA_ARGS__}; \ const int rb_yield_values_nargs = \ (int)(sizeof(rb_yield_values_args) / sizeof(VALUE)); \ rb_yield_values2( \ rb_varargs_argc_check(rb_yield_values_argc, rb_yield_values_nargs), \ rb_yield_values_nargs ? rb_yield_values_args : NULL); \ }) # define rb_funcall(recv, mid, argc, ...) \ __extension__({ \ const int rb_funcall_argc = (argc); \ const VALUE rb_funcall_args[] = {__VA_ARGS__}; \ const int rb_funcall_nargs = \ (int)(sizeof(rb_funcall_args) / sizeof(VALUE)); \ rb_funcallv(recv, mid, \ rb_varargs_argc_check(rb_funcall_argc, rb_funcall_nargs), \ rb_funcall_nargs ? rb_funcall_args : NULL); \ }) #endif ``` -- https://bugs.ruby-lang.org/ Unsubscribe: