* ext/tk/tkutil/tkutil.c (rb_ary_cat): fallback definition.
  rb_ary_cat() is available since 2.0.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2015-11-04 07:50:34 +00:00
Родитель 8df1863dcb
Коммит 0047ab96cd
2 изменённых файлов: 21 добавлений и 8 удалений

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

@ -6,6 +6,7 @@ begin
have_func("rb_obj_taint", "ruby.h")
have_func("rb_sym2str", "ruby.h")
have_func("rb_id2str", "ruby.h")
have_func("rb_ary_cat", "ruby.h")
have_func("strndup", "string.h")
create_makefile('tkutil')

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

@ -106,6 +106,22 @@ strndup(ptr, len)
}
#endif
#ifndef HAVE_RB_ARY_CAT
static VALUE rb_ary_cat _((VALUE, const VALUE *, long));
static VALUE
rb_ary_cat(ary, argv, len)
VALUE ary;
const VALUE *argv;
long len;
{
long i;
for (i = 0; i < len; i++) {
rb_ary_push(ary, argv[i]);
}
return ary;
}
#endif
/*************************************/
#if defined(HAVE_RB_OBJ_INSTANCE_EXEC) && !defined(RUBY_VM)
@ -584,7 +600,7 @@ assoc2kv(assoc, ary, self)
VALUE ary;
VALUE self;
{
long i, j, len;
long i, len;
volatile VALUE pair;
volatile VALUE val;
volatile VALUE dst = rb_ary_new2(2 * RARRAY_LEN(assoc));
@ -611,9 +627,7 @@ assoc2kv(assoc, ary, self)
rb_ary_push(dst, key2keyname(RARRAY_CONST_PTR(pair)[0]));
val = rb_ary_new2(RARRAY_LEN(pair) - 1);
for(j = 1; j < RARRAY_LEN(pair); j++) {
rb_ary_push(val, RARRAY_CONST_PTR(pair)[j]);
}
rb_ary_cat(val, RARRAY_CONST_PTR(pair) + 1, RARRAY_LEN(pair) - 1);
rb_ary_push(dst, val);
}
@ -632,7 +646,7 @@ assoc2kv_enc(assoc, ary, self)
VALUE ary;
VALUE self;
{
long i, j, len;
long i, len;
volatile VALUE pair;
volatile VALUE val;
volatile VALUE dst = rb_ary_new2(2 * RARRAY_LEN(assoc));
@ -659,9 +673,7 @@ assoc2kv_enc(assoc, ary, self)
rb_ary_push(dst, key2keyname(RARRAY_CONST_PTR(pair)[0]));
val = rb_ary_new2(RARRAY_LEN(pair) - 1);
for(j = 1; j < RARRAY_LEN(pair); j++) {
rb_ary_push(val, RARRAY_CONST_PTR(pair)[j]);
}
rb_ary_cat(val, RARRAY_CONST_PTR(pair) + 1, RARRAY_LEN(pair) - 1);
rb_ary_push(dst, get_eval_string_core(val, Qtrue, self));
}