diff options
author | ngoto <ngoto@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-20 14:55:23 +0000 |
---|---|---|
committer | ngoto <ngoto@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-20 14:55:23 +0000 |
commit | 02cafdf4916480c2a5b015553cf5b02d6120aed4 () | |
tree | efc49b1d988f1dab52d0c32af677043a3705ccb5 /id_table.c | |
parent | a716a2474b71d4290763986cfd5f1cde0ccb5080 (diff) |
capa should be even number on 64-bit SPARC for 8-byte word alignment
* id_table.c (list_id_table_init): When unaligned word access is prohibited and sizeof(VALUE) is 8 (64-bit machines), capa should always be even number for 8-byte word alignment of the values of a table. This code assumes that sizeof(ID) is 4, sizeof(VALUE) is 8, and xmalloc() returns 8-byte aligned memory. This fixes bus error on 64-bit SPARC Solaris 10. [Bug #12406][ruby-dev:49631] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | id_table.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -379,6 +379,14 @@ static struct list_id_table * list_id_table_init(struct list_id_table *tbl, size_t capa) { if (capa > 0) { tbl->capa = (int)capa; #if ID_TABLE_USE_CALC_VALUES tbl->keys = (id_key_t *)xmalloc(sizeof(id_key_t) * capa + sizeof(VALUE) * capa); |