Simon South created THRIFT-3273:
-----------------------------------
Summary: 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
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.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)