diff options
author | Tim Emiola <temiola@google.com> | 2015-11-11 15:58:44 -0800 |
---|---|---|
committer | Tim Emiola <temiola@google.com> | 2015-11-12 16:24:13 -0800 |
commit | 9161a82565a0bdaf4622f7f8c8e967d29e904a9c (patch) | |
tree | 9fb3fb67cf41eb556955aa22ec79f400b3a2de91 /src/ruby/ext/grpc/rb_grpc.c | |
parent | c8bd16b7e14f81c7c6e8be7817ed86b53c4c2cc9 (diff) | |
download | grpc-grpc-9161a82565a0bdaf4622f7f8c8e967d29e904a9c.tar.gz |
Corrects compile error on ruby 2.0
Diffstat (limited to 'src/ruby/ext/grpc/rb_grpc.c')
-rw-r--r-- | src/ruby/ext/grpc/rb_grpc.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/ruby/ext/grpc/rb_grpc.c b/src/ruby/ext/grpc/rb_grpc.c index 327fd1a4fc..33f48779d8 100644 --- a/src/ruby/ext/grpc/rb_grpc.c +++ b/src/ruby/ext/grpc/rb_grpc.c @@ -55,7 +55,10 @@ static rb_data_type_t grpc_rb_timespec_data_type = { {NULL, NULL}}, NULL, NULL, - RUBY_TYPED_FREE_IMMEDIATELY}; +#ifdef RUBY_TYPED_FREE_IMMEDIATELY + RUBY_TYPED_FREE_IMMEDIATELY +#endif +}; /* Alloc func that blocks allocation of a given object by raising an * exception. */ @@ -262,10 +265,20 @@ static void Init_grpc_time_consts() { id_tv_nsec = rb_intern("tv_nsec"); } +/* + TODO: find an alternative to ruby_vm_at_exit that is ok in Ruby 2.0 where + RUBY_TYPED_FREE_IMMEDIATELY is not defined. + + At the moment, registering a function using ruby_vm_at_exit segfaults in Ruby + 2.0. This is not an issue with the gRPC handler. More likely, this was an + in issue with 2.0 that got resolved in 2.1 and has not been backported. +*/ +#ifdef RUBY_TYPED_FREE_IMMEDIATELY static void grpc_rb_shutdown(ruby_vm_t *vm) { (void)vm; grpc_shutdown(); } +#endif /* Initialize the GRPC module structs */ @@ -285,7 +298,12 @@ VALUE sym_metadata = Qundef; void Init_grpc() { grpc_init(); + +/* TODO: find alternative to ruby_vm_at_exit that is ok in Ruby 2.0 */ +#ifdef RUBY_TYPED_FREE_IMMEDIATELY ruby_vm_at_exit(grpc_rb_shutdown); +#endif + grpc_rb_mGRPC = rb_define_module("GRPC"); grpc_rb_mGrpcCore = rb_define_module_under(grpc_rb_mGRPC, "Core"); grpc_rb_sNewServerRpc = |