From e8379ca2955c336142ddf6e614584310e44d4baa Mon Sep 17 00:00:00 2001
From: Eric Wong <e@80x24.org>
Date: Sat, 30 May 2015 00:56:05 +0000
Subject: [PATCH] ext/socket/ancdata.c: use RB_GC_GUARD instead of volatile

See doc/extension.rdoc for explanation.
---
 ext/socket/ancdata.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/ext/socket/ancdata.c b/ext/socket/ancdata.c
index 0a94149..ef6a870 100644
--- a/ext/socket/ancdata.c
+++ b/ext/socket/ancdata.c
@@ -1135,7 +1135,7 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock)
     struct msghdr mh;
     struct iovec iov;
 #if defined(HAVE_STRUCT_MSGHDR_MSG_CONTROL)
-    volatile VALUE controls_str = 0;
+    VALUE controls_str = 0;
     VALUE *controls_ptr = NULL;
     int family;
 #endif
@@ -1291,6 +1291,9 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock)
             rb_readwrite_sys_fail(RB_IO_WAIT_WRITABLE, "sendmsg(2) would block");
 	rb_sys_fail("sendmsg(2)");
     }
+#if defined(HAVE_STRUCT_MSGHDR_MSG_CONTROL)
+    RB_GC_GUARD(controls_str);
+#endif
 
     return SSIZET2NUM(ss);
 }
-- 
EW

