Project

General

Profile

Actions

Bug #17108

closed

error: initialization of ‘long unsigned int’ from ‘void *’ makes integer from pointer without a cast

Added by aotto1968 (Andreas Otto) over 3 years ago. Updated over 3 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux-gnu]
[ruby-core:99522]

Description

It seems that the "OPTIMIZATION" macro for "rb_funcall" causes 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
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0