diff options
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -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; @@ -290,6 +293,15 @@ rb_str_new(const char *ptr, long 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) { VALUE str = str_new(rb_cString, ptr, len); @@ -308,6 +320,15 @@ rb_str_new2(const char *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) { VALUE str = rb_str_new(ptr, len); |