aboutsummaryrefslogtreecommitdiffstats
path: root/node.c
diff options
context:
space:
mode:
authoryui-knk <yui-knk@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-11-03 03:22:23 +0000
committeryui-knk <yui-knk@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-11-03 03:22:23 +0000
commit22ce21c19abdbeb67e4cd6bfc30eab4072ae30dd (patch)
treebdf486e4987b309294ea3c31a5fd121c076f4cdf /node.c
parent23f437d92f1c6ad8dfa4ddf04381096b4fdf7dbe (diff)
downloadruby-22ce21c19abdbeb67e4cd6bfc30eab4072ae30dd.tar.gz
node.c: Fix possible alignment bugs
* node.c (rb_node_buffer_new): Use offsetof for node_buffer_t size calculation. * node.c (rb_ast_newnode): Use offsetof for node_buffer_elem_t size calculation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60628 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'node.c')
-rw-r--r--node.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/node.c b/node.c
index d64b6d282f..7cd6aee9f2 100644
--- a/node.c
+++ b/node.c
@@ -1235,7 +1235,7 @@ struct node_buffer_struct {
node_buffer_t *
rb_node_buffer_new()
{
- node_buffer_t *nb = xmalloc(sizeof(node_buffer_t) + 16 * sizeof(NODE));
+ node_buffer_t *nb = xmalloc(offsetof(node_buffer_t, body) + offsetof(node_buffer_elem_t, buf) + 16 * sizeof(NODE));
nb->idx = 0;
nb->len = 16;
nb->head = &nb->body;
@@ -1263,7 +1263,7 @@ rb_ast_newnode(rb_ast_t *ast)
if (nb->idx >= nb->len) {
long n = nb->len * 2;
node_buffer_elem_t *nbe;
- nbe = xmalloc(sizeof(node_buffer_elem_t) + n * sizeof(NODE));
+ nbe = xmalloc(offsetof(node_buffer_elem_t, buf) + n * sizeof(NODE));
nb->idx = 0;
nb->len = n;
nbe->next = nb->head;