From 33ae76a09c7e71863bdc147f16843ff12354a409 Mon Sep 17 00:00:00 2001 From: naruse Date: Fri, 25 Jan 2008 16:40:02 +0000 Subject: * string.c (rb_str_usascii_new{,2}: defined. (rb_str_new): set US-ASCII and ENC_CODERANGE_7BIT when empty string. * encoding.c (rb_usascii_encoding, rb_usascii_encindex): defined. (rb_enc_inspect, enc_name, rb_locale_charmap, rb_enc_name_list_i): use rb_str_ascii_new. * array.c (recursive_join, inspect_ary): ditto. * object.c (nil_to_s, nil_inspect, true_to_s, false_to_s, rb_mod_to_s): ditto. * hash.c (inspect_hash, rb_hash_inspect, rb_f_getenv, env_fetch, env_clear, env_to_s, env_inspect): ditto. * numeric.c (flo_to_s, int_chr, rb_fix2str): ditto. * bignum.c (rb_big2str): ditto. * file.c (rb_file_ftype, rb_file_s_dirname, rb_file_s_extname, file_inspect_join, Init_file): ditto. * test/ruby/test_ruby_m17n.rb: add checks for encoding of string. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@15244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- string.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'string.c') diff --git a/string.c b/string.c index 1391ac316..684f88025 100644 --- a/string.c +++ b/string.c @@ -278,6 +278,9 @@ str_new(VALUE klass, const char *ptr, long len) if (ptr) { memcpy(RSTRING_PTR(str), ptr, len); } + else { + ENCODING_CODERANGE_SET(str, rb_usascii_encindex(), ENC_CODERANGE_7BIT); + } STR_SET_LEN(str, len); RSTRING_PTR(str)[len] = '\0'; return str; @@ -289,6 +292,15 @@ rb_str_new(const char *ptr, long len) return str_new(rb_cString, ptr, len); } +VALUE +rb_usascii_str_new(const char *ptr, long len) +{ + VALUE str = str_new(rb_cString, ptr, len); + + ENCODING_CODERANGE_SET(str, rb_usascii_encindex(), ENC_CODERANGE_7BIT); + return str; +} + VALUE rb_enc_str_new(const char *ptr, long len, rb_encoding *enc) { @@ -307,6 +319,15 @@ rb_str_new2(const char *ptr) return rb_str_new(ptr, strlen(ptr)); } +VALUE +rb_usascii_str_new2(const char *ptr) +{ + if (!ptr) { + rb_raise(rb_eArgError, "NULL pointer given"); + } + return rb_usascii_str_new(ptr, strlen(ptr)); +} + VALUE rb_tainted_str_new(const char *ptr, long len) { -- cgit