aboutsummaryrefslogtreecommitdiffstats
path: root/regparse.h
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-12-09 08:02:06 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-12-09 08:02:06 +0000
commit98cbd8b7a97c2ebd18dae8fdf407938e9478a1c0 (patch)
tree80caf5f5a2451ffa7b50e2dbab61f237518348a4 /regparse.h
parent1bed89527ba0f732b058a6da387bf84d8410ae4a (diff)
downloadruby-98cbd8b7a97c2ebd18dae8fdf407938e9478a1c0.tar.gz
regparse.h: ANSI alias rule fix
* regparse.h (SET_NTYPE): get rid of breaking strict aliasing. patch by Zarko Todorovski in [ruby-core:71953]. [Bug #11790] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'regparse.h')
-rw-r--r--regparse.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/regparse.h b/regparse.h
index 35de54671e..caf0790b1c 100644
--- a/regparse.h
+++ b/regparse.h
@@ -67,7 +67,11 @@ RUBY_SYMBOL_EXPORT_BEGIN
BIT_NT_CANY | BIT_NT_BREF)) != 0)
#define NTYPE(node) ((node)->u.base.type)
-#define SET_NTYPE(node, ntype) (node)->u.base.type = (ntype)
+#define SET_NTYPE(node, ntype) \
+ do { \
+ int value = ntype; \
+ memcpy(&((node)->u.base.type), &value, sizeof(int)); \
+ } while (0)
#define NSTR(node) (&((node)->u.str))
#define NCCLASS(node) (&((node)->u.cclass))