aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/optional/capi/ext/string_spec.c
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/optional/capi/ext/string_spec.c')
-rw-r--r--spec/ruby/optional/capi/ext/string_spec.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/spec/ruby/optional/capi/ext/string_spec.c b/spec/ruby/optional/capi/ext/string_spec.c
index 0568b42212..929d69f9e5 100644
--- a/spec/ruby/optional/capi/ext/string_spec.c
+++ b/spec/ruby/optional/capi/ext/string_spec.c
@@ -181,6 +181,10 @@ VALUE string_spec_rb_str_length(VALUE self, VALUE str) {
VALUE string_spec_rb_str_new(VALUE self, VALUE str, VALUE len) {
return rb_str_new(RSTRING_PTR(str), FIX2INT(len));
}
+
+VALUE string_spec_rb_str_new_offset(VALUE self, VALUE str, VALUE offset, VALUE len) {
+ return rb_str_new(RSTRING_PTR(str) + FIX2INT(offset), FIX2INT(len));
+}
#endif
#ifdef HAVE_RB_STR_NEW2
@@ -370,6 +374,13 @@ VALUE string_spec_StringValue(VALUE self, VALUE str) {
}
#endif
+#ifdef HAVE_SAFE_STRING_VALUE
+static VALUE string_spec_SafeStringValue(VALUE self, VALUE str) {
+ SafeStringValue(str);
+ return str;
+}
+#endif
+
#ifdef HAVE_RB_STR_HASH
static VALUE string_spec_rb_str_hash(VALUE self, VALUE str) {
st_index_t val = rb_str_hash(str);
@@ -529,6 +540,7 @@ void Init_string_spec(void) {
#ifdef HAVE_RB_STR_NEW
rb_define_method(cls, "rb_str_new", string_spec_rb_str_new, 2);
+ rb_define_method(cls, "rb_str_new_offset", string_spec_rb_str_new_offset, 3);
#endif
#ifdef HAVE_RB_STR_NEW2
@@ -639,6 +651,10 @@ void Init_string_spec(void) {
rb_define_method(cls, "StringValue", string_spec_StringValue, 1);
#endif
+#ifdef HAVE_SAFE_STRING_VALUE
+ rb_define_method(cls, "SafeStringValue", string_spec_SafeStringValue, 1);
+#endif
+
#ifdef HAVE_RB_STR_HASH
rb_define_method(cls, "rb_str_hash", string_spec_rb_str_hash, 1);
#endif