diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-25 08:54:29 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-25 08:54:29 +0000 |
commit | 5ba27573a0d179d0a39d9997cfde000b20cd0b87 (patch) | |
tree | b25c4de31f7659071e51057cc252a37cd8f26008 | |
parent | c2a734ea9946f88109b5ffc4507af66eed7f8cc8 (diff) | |
download | ruby-5ba27573a0d179d0a39d9997cfde000b20cd0b87.tar.gz |
* string.c, include/ruby/intern.h: export rb_str_length().
* insns.def: use rb_str_lengt() in opt_length.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | include/ruby/intern.h | 1 | ||||
-rw-r--r-- | insns.def | 8 | ||||
-rw-r--r-- | string.c | 2 |
4 files changed, 12 insertions, 5 deletions
@@ -1,3 +1,9 @@ +Sat Aug 25 17:52:06 2007 Koichi Sasada <ko1@atdot.net> + + * string.c, include/ruby/intern.h: export rb_str_length(). + + * insns.def: use rb_str_lengt() in opt_length. + Sat Aug 25 17:48:51 2007 Koichi Sasada <ko1@atdot.net> * cont.c: rename FIBER_STACK_SIZE to FIBER_VM_STACK_SIZE. diff --git a/include/ruby/intern.h b/include/ruby/intern.h index ae231c7d91..ed16c73d97 100644 --- a/include/ruby/intern.h +++ b/include/ruby/intern.h @@ -520,6 +520,7 @@ VALUE rb_str_associated(VALUE); void rb_str_setter(VALUE, ID, VALUE*); VALUE rb_str_intern(VALUE); VALUE rb_sym_to_s(VALUE); +VALUE rb_str_length(VALUE); /* struct.c */ VALUE rb_struct_new(VALUE, ...); VALUE rb_struct_define(const char*, ...); @@ -1951,11 +1951,11 @@ opt_length { if (!SPECIAL_CONST_P(recv) && BASIC_OP_UNREDEFINED_P(BOP_LENGTH)) { - if (HEAP_CLASS_OF(recv) == rb_cArray) { - val = LONG2NUM(RARRAY_LEN(recv)); + if (HEAP_CLASS_OF(recv) == rb_cString) { + val = rb_str_length(recv); } - else if (HEAP_CLASS_OF(recv) == rb_cString) { - val = LONG2NUM(RSTRING_LEN(recv)); + else if (HEAP_CLASS_OF(recv) == rb_cArray) { + val = LONG2NUM(RARRAY_LEN(recv)); } else if (HEAP_CLASS_OF(recv) == rb_cHash) { val = INT2FIX(RHASH(recv)->tbl->num_entries); @@ -421,7 +421,7 @@ str_strlen(VALUE str, rb_encoding *enc) * Returns the character length of <i>str</i>. */ -static VALUE +VALUE rb_str_length(VALUE str) { int len; |