Skip to content

Commit

Permalink
use RARRAY_LENINT() to pass the value into int type arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
Watson1978 committed Jul 18, 2012
1 parent fe61733 commit f657737
Show file tree
Hide file tree
Showing 7 changed files with 9 additions and 8 deletions.
2 changes: 1 addition & 1 deletion dispatcher.cpp
Expand Up @@ -1147,7 +1147,7 @@ vm_block_eval(RoxorVM *vm, rb_vm_block_t *b, SEL sel, VALUE self,
&& (arity.min > 1
|| (arity.min == 1 && arity.min != arity.max))) {
// Expand the array.
const long ary_len = RARRAY_LEN(argv[0]);
const int ary_len = RARRAY_LENINT(argv[0]);
if (ary_len > 0) {
new_argv = (VALUE *)RARRAY_PTR(argv[0]);
}
Expand Down
2 changes: 1 addition & 1 deletion enumerator.c
Expand Up @@ -294,7 +294,7 @@ enumerator_block_call(VALUE obj, VALUE (*func)(ANYARGS), VALUE arg)

e = enumerator_ptr(obj);
if (e->args != 0) {
argc = RARRAY_LEN(e->args);
argc = RARRAY_LENINT(e->args);
argv = RARRAY_PTR(e->args);
}
return rb_objc_block_call(e->obj, e->sel, argc, (VALUE *)argv,
Expand Down
2 changes: 1 addition & 1 deletion ext/iconv/iconv.c
Expand Up @@ -243,7 +243,7 @@ iconv_create(VALUE to, VALUE from, struct rb_iconv_opt_t *opt, int *idx)
VALUE error = rb_str_new2(inval ? "invalid encoding " : "iconv");
VALUE format = rb_str_new2("%s(\"%s\", \"%s\")");
VALUE format_args = rb_ary_new3(3, error, to, from);
VALUE msg = rb_str_format(RARRAY_LEN(format_args),
VALUE msg = rb_str_format(RARRAY_LENINT(format_args),
RARRAY_PTR(format_args), format);

s = RSTRING_PTR(msg);
Expand Down
1 change: 1 addition & 0 deletions include/ruby/ruby.h
Expand Up @@ -480,6 +480,7 @@ VALUE rb_ary_elt(VALUE, long);
void rb_ary_elt_set(VALUE, long, VALUE);

#define RARRAY_LEN(a) (rb_ary_len((VALUE)a))
#define RARRAY_LENINT(a) (rb_long2int(RARRAY_LEN(a)))
#define RARRAY_AT(a,i) (rb_ary_elt((VALUE)a, (long)i))
/* IMPORTANT: try to avoid using RARRAY_PTR if necessary, because it's
* a _much_ slower operation than RARRAY_AT. RARRAY_PTR is only provided for
Expand Down
2 changes: 1 addition & 1 deletion string.c
Expand Up @@ -2636,7 +2636,7 @@ rstr_format(VALUE str, SEL sel, VALUE arg)
VALUE tmp = rb_check_array_type(arg);

if (!NIL_P(tmp)) {
return rb_str_format(RARRAY_LEN(tmp), RARRAY_PTR(tmp), str);
return rb_str_format(RARRAY_LENINT(tmp), RARRAY_PTR(tmp), str);
}
return rb_str_format(1, &arg, str);
}
Expand Down
2 changes: 1 addition & 1 deletion struct.c
Expand Up @@ -376,7 +376,7 @@ struct_alloc(VALUE klass)
VALUE
rb_struct_alloc(VALUE klass, VALUE values)
{
return rb_class_new_instance(RARRAY_LEN(values), (VALUE *)RARRAY_PTR(values), klass);
return rb_class_new_instance(RARRAY_LENINT(values), (VALUE *)RARRAY_PTR(values), klass);
}

VALUE
Expand Down
6 changes: 3 additions & 3 deletions vm_eval.c
Expand Up @@ -78,7 +78,7 @@ rb_apply(VALUE recv, ID mid, VALUE args)
int argc;
VALUE *argv;

argc = RARRAY_LEN(args); /* Assigns LONG, but argc is INT */
argc = RARRAY_LENINT(args);
argv = ALLOCA_N(VALUE, argc);
MEMCPY(argv, RARRAY_PTR(args), VALUE, argc);
return rb_call(recv, mid, argc, argv, CALL_FCALL, false);
Expand Down Expand Up @@ -220,7 +220,7 @@ rb_yield_splat(VALUE values)
if (NIL_P(tmp)) {
rb_raise(rb_eArgError, "not an array");
}
return rb_vm_yield(RARRAY_LEN(tmp), RARRAY_PTR(tmp));
return rb_vm_yield(RARRAY_LENINT(tmp), RARRAY_PTR(tmp));
}

static VALUE
Expand Down Expand Up @@ -461,7 +461,7 @@ rb_eval_cmd(VALUE cmd, VALUE arg, int level)

if (TYPE(cmd) != T_STRING) {
rb_set_safe_level_force(level);
val = rb_funcall2(cmd, rb_intern("call"), RARRAY_LEN(arg),
val = rb_funcall2(cmd, rb_intern("call"), RARRAY_LENINT(arg),
RARRAY_PTR(arg));
rb_set_safe_level_force(safe);
return val;
Expand Down

0 comments on commit f657737

Please sign in to comment.