Project

General

Profile

Bug #17108

Updated by nobu (Nobuyoshi Nakada) over 3 years ago

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

Back