From 99eb9f94bf49cdb322b0de9f4bb16d5af15b08fd Mon Sep 17 00:00:00 2001
From: Yuki Yugui Sonoda <yugui@yugui.jp>
Date: Thu, 16 Apr 2015 20:09:55 +0900
Subject: [PATCH] Fix a linkage error with mac clang

Prevent symbol cache variables from being instantiated multipe times.
---
 src/ruby/ext/grpc/rb_grpc.c | 5 +++++
 src/ruby/ext/grpc/rb_grpc.h | 6 +++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/ruby/ext/grpc/rb_grpc.c b/src/ruby/ext/grpc/rb_grpc.c
index 51d1872e8a..4b1015f0fe 100644
--- a/src/ruby/ext/grpc/rb_grpc.c
+++ b/src/ruby/ext/grpc/rb_grpc.c
@@ -257,6 +257,11 @@ VALUE grpc_rb_sStatus = Qnil;
 VALUE grpc_rb_mGRPC = Qnil;
 VALUE grpc_rb_mGrpcCore = Qnil;
 
+/* cached Symbols for members in Status struct */
+VALUE sym_code = Qundef;
+VALUE sym_details = Qundef;
+VALUE sym_metadata = Qundef;
+
 void Init_grpc() {
   grpc_init();
   ruby_vm_at_exit(grpc_rb_shutdown);
diff --git a/src/ruby/ext/grpc/rb_grpc.h b/src/ruby/ext/grpc/rb_grpc.h
index fac4c6d671..1d411baf5b 100644
--- a/src/ruby/ext/grpc/rb_grpc.h
+++ b/src/ruby/ext/grpc/rb_grpc.h
@@ -48,13 +48,13 @@ extern VALUE grpc_rb_sNewServerRpc;
 extern VALUE grpc_rb_sStatus;
 
 /* sym_code is the symbol for the code attribute of grpc_rb_sStatus. */
-VALUE sym_code;
+extern VALUE sym_code;
 
 /* sym_details is the symbol for the details attribute of grpc_rb_sStatus. */
-VALUE sym_details;
+extern VALUE sym_details;
 
 /* sym_metadata is the symbol for the metadata attribute of grpc_rb_sStatus. */
-VALUE sym_metadata;
+extern VALUE sym_metadata;
 
 /* GC_NOT_MARKED is used in calls to Data_Wrap_Struct to indicate that the
    wrapped struct does not need to participate in ruby gc. */
-- 
GitLab