[ 
https://issues.apache.org/jira/browse/THRIFT-3273?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Simon South updated THRIFT-3273:
--------------------------------
    Description: 
In code generated by the compiler for C (GLib), a service's processor class 
incorrectly treats function and void pointers as interchangeable: When adding 
to the {{process_map}} hash table it supplies a pointer to a function, while 
{{g_hash_table_insert}} expects a {{gpointer}} (effectively {{void *}}) to a 
data object.

ISO C explicitly forbids this conversion as it is not compatible with all 
architectures, and with its {{-pedantic}} option enabled gcc will generate 
warnings like

{code}
gen-c_glib/calculator.c: In function 'calculator_processor_init':
gen-c_glib/calculator.c:1231:24: warning: ISO C forbids passing argument 3 of 
'g_hash_table_insert' between function pointer and 'void *' [-Wpedantic]
                        calculator_processor_process_ping);
{code}

The compiler needs to be fixed so the code it generates does not try to use 
function pointers where data (void) pointers are expected.

  was:
In code generated by the compiler for C (GLib), a service's processor class 
incorrectly treats function and void pointers as interchangeable: When adding 
to the {{process_map}} hash table it supplies a pointer to a function, while 
{{g_hash_table_insert}} expects a {{gpointer}} (effectively {{void *}}) to a 
data object.

ISO C explicitly forbids this conversion as it is not compatible with all 
architectures, and with its {{-pedantic}} option enabled gcc will generate 
warnings like

{code}
gen-c_glib/calculator.c: In function 'calculator_processor_init':
gen-c_glib/calculator.c:1231:24: warning: ISO C forbids passing argument 3 of 
'g_hash_table_insert' between function pointer and 'void *' [-Wpedantic]
                        calculator_processor_process_ping);
{code}

The compiler needs to be fixed so the code it does not try to use function 
pointers where data (void) pointers are expected.


> c_glib: Generated code tries to convert between function and void pointers
> --------------------------------------------------------------------------
>
>                 Key: THRIFT-3273
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3273
>             Project: Thrift
>          Issue Type: Bug
>          Components: C glib - Compiler
>    Affects Versions: 0.9.3
>         Environment: Fedora 22 (gcc 5.1.1) on x86_64
>            Reporter: Simon South
>            Assignee: Simon South
>            Priority: Minor
>              Labels: c_glib, compiler
>
> In code generated by the compiler for C (GLib), a service's processor class 
> incorrectly treats function and void pointers as interchangeable: When adding 
> to the {{process_map}} hash table it supplies a pointer to a function, while 
> {{g_hash_table_insert}} expects a {{gpointer}} (effectively {{void *}}) to a 
> data object.
> ISO C explicitly forbids this conversion as it is not compatible with all 
> architectures, and with its {{-pedantic}} option enabled gcc will generate 
> warnings like
> {code}
> gen-c_glib/calculator.c: In function 'calculator_processor_init':
> gen-c_glib/calculator.c:1231:24: warning: ISO C forbids passing argument 3 of 
> 'g_hash_table_insert' between function pointer and 'void *' [-Wpedantic]
>                         calculator_processor_process_ping);
> {code}
> The compiler needs to be fixed so the code it generates does not try to use 
> function pointers where data (void) pointers are expected.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to