From da805d34187aba4cacbb792155a11ab4201f6ad4 Mon Sep 17 00:00:00 2001 From: matz Date: Wed, 22 Oct 2008 05:55:22 +0000 Subject: * string.c (rb_external_str_new_with_enc): no implicit strlen call. [ruby-dev:36854] * string.c (rb_external_str_new_cstr): new function to create string from external NUL terminated C string. * string.c (rb_locale_str_new_cstr): ditto. * ext/readline/readline.c: now use rb_locale_str_new_cstr(). * test/sdbm/test_sdbm.rb (TestSDBM#test_delete_with_block): deleted key to the block may be a copy of specified key. * test/dbm/test_dbm.rb (TestDBM#test_delete_with_block): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@19885 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- string.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'string.c') diff --git a/string.c b/string.c index b637d38fb..16df6021d 100644 --- a/string.c +++ b/string.c @@ -529,7 +529,6 @@ rb_external_str_new_with_enc(const char *ptr, long len, rb_encoding *eenc) { VALUE str; - if (len == 0 && ptr) len = strlen(ptr); str = rb_tainted_str_new(ptr, len); rb_enc_associate(str, eenc); return rb_str_conv_enc(str, eenc, rb_default_internal_encoding()); @@ -541,12 +540,24 @@ rb_external_str_new(const char *ptr, long len) return rb_external_str_new_with_enc(ptr, len, rb_default_external_encoding()); } +VALUE +rb_external_str_new_cstr(const char *ptr) +{ + return rb_external_str_new_with_enc(ptr, strlen(ptr), rb_default_external_encoding()); +} + VALUE rb_locale_str_new(const char *ptr, long len) { return rb_external_str_new_with_enc(ptr, len, rb_locale_encoding()); } +VALUE +rb_locale_str_new_cstr(const char *ptr) +{ + return rb_external_str_new_with_enc(ptr, strlen(ptr), rb_locale_encoding()); +} + VALUE rb_str_export(VALUE str) { -- cgit