summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-17 05:08:43 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-17 05:08:43 +0000
commita906fce838e51ddaa6c1b22162959968bc77a30c (patch)
tree0bba92c92287783b54c383ea08684dcd12e0b024 /string.c
parentbf2d82b280af0c2327a939013699a4616fa5c1c1 (diff)
* string.c (str_strlen): rb_enc_strlen doesn't fail.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/string.c b/string.c
index aef3d1896c..c9e3562af2 100644
--- a/string.c
+++ b/string.c
@@ -622,7 +622,6 @@ rb_enc_strlen(const char *p, const char *e, rb_encoding *enc)
static long
str_strlen(VALUE str, rb_encoding *enc)
{
- long len;
const char *p, *e;
if (single_byte_optimizable(str)) return RSTRING_LEN(str);
@@ -632,7 +631,7 @@ str_strlen(VALUE str, rb_encoding *enc)
#ifdef NONASCII_MASK
if (ENC_CODERANGE(str) == ENC_CODERANGE_VALID &&
enc == rb_utf8_encoding()) {
- len = 0;
+ long len = 0;
if (sizeof(long) * 2 < e - p) {
const unsigned long *s, *t;
const VALUE lowbits = sizeof(unsigned long) - 1;
@@ -661,13 +660,8 @@ str_strlen(VALUE str, rb_encoding *enc)
}
return len;
}
- else
#endif
- len = rb_enc_strlen(p, e, enc);
- if (len < 0) {
- rb_raise(rb_eArgError, "invalid mbstring sequence");
- }
- return len;
+ return rb_enc_strlen(p, e, enc);
}
/*