* compile.c (iseq_set_exception_local_table, iseq_set_local_table,

rb_iseq_build_from_ary): fix type inconsistency (which is benign
  because sizeof(ID) == sizeof(ID*), though).  Coverity Scan found
  these bugs.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29799 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
mame 2010-11-15 14:44:19 +00:00
Родитель e20d736467
Коммит 7b7210439c
2 изменённых файлов: 11 добавлений и 4 удалений

Просмотреть файл

@ -1,3 +1,10 @@
Mon Nov 15 23:41:21 2010 Yusuke Endoh <mame@tsg.ne.jp>
* compile.c (iseq_set_exception_local_table, iseq_set_local_table,
rb_iseq_build_from_ary): fix type inconsistency (which is benign
because sizeof(ID) == sizeof(ID*), though). Coverity Scan found
these bugs.
Mon Nov 15 22:47:27 2010 Yusuke Endoh <mame@tsg.ne.jp> Mon Nov 15 22:47:27 2010 Yusuke Endoh <mame@tsg.ne.jp>
* vm_eval.c (rb_funcall): ensure va_end after va_init_list. Coverity * vm_eval.c (rb_funcall): ensure va_end after va_init_list. Coverity

Просмотреть файл

@ -980,7 +980,7 @@ iseq_set_exception_local_table(rb_iseq_t *iseq)
ID id_dollar_bang; ID id_dollar_bang;
CONST_ID(id_dollar_bang, "#$!"); CONST_ID(id_dollar_bang, "#$!");
iseq->local_table = (ID *)ALLOC_N(ID *, 1); iseq->local_table = (ID *)ALLOC_N(ID, 1);
iseq->local_table_size = 1; iseq->local_table_size = 1;
iseq->local_size = iseq->local_table_size + 1; iseq->local_size = iseq->local_table_size + 1;
iseq->local_table[0] = id_dollar_bang; iseq->local_table[0] = id_dollar_bang;
@ -1199,8 +1199,8 @@ iseq_set_local_table(rb_iseq_t *iseq, ID *tbl)
} }
if (size > 0) { if (size > 0) {
iseq->local_table = (ID *)ALLOC_N(ID *, size); iseq->local_table = (ID *)ALLOC_N(ID, size);
MEMCPY(iseq->local_table, tbl, ID *, size); MEMCPY(iseq->local_table, tbl, ID, size);
} }
iseq->local_size = iseq->local_table_size = size; iseq->local_size = iseq->local_table_size = size;
@ -5372,7 +5372,7 @@ rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE locals, VALUE args,
INIT_ANCHOR(anchor); INIT_ANCHOR(anchor);
iseq->local_table_size = RARRAY_LENINT(locals); iseq->local_table_size = RARRAY_LENINT(locals);
iseq->local_table = tbl = (ID *)ALLOC_N(ID *, iseq->local_table_size); iseq->local_table = tbl = (ID *)ALLOC_N(ID, iseq->local_table_size);
iseq->local_size = iseq->local_table_size + 1; iseq->local_size = iseq->local_table_size + 1;
for (i=0; i<RARRAY_LEN(locals); i++) { for (i=0; i<RARRAY_LEN(locals); i++) {