From 3614f8bd1c813916054079055d13462e90808a96 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 5 Nov 2014 01:54:22 +0000 Subject: string.c: wchar terminator * string.c (rb_str_lstrip_bang, rb_str_rstrip_bang): terminate wchar strings with wchar 0. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/-test-/string/cstr.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'ext/-test-') diff --git a/ext/-test-/string/cstr.c b/ext/-test-/string/cstr.c index c2ed410b41..7759cbdcf0 100644 --- a/ext/-test-/string/cstr.c +++ b/ext/-test-/string/cstr.c @@ -19,8 +19,22 @@ bug_str_cstr_term(VALUE str) return INT2NUM(c); } +static VALUE +bug_str_cstr_term_char(VALUE str) +{ + long len; + char *s; + int c; + rb_encoding *enc = rb_enc_get(str); + + RSTRING_GETMEM(str, s, len); + c = rb_enc_codepoint(&s[len], &s[len+rb_enc_mbminlen(enc)], enc); + return c ? rb_enc_uint_chr((unsigned int)c, enc) : Qnil; +} + void Init_cstr(VALUE klass) { rb_define_method(klass, "cstr_term", bug_str_cstr_term, 0); + rb_define_method(klass, "cstr_term_char", bug_str_cstr_term_char, 0); } -- cgit v1.2.3