summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-01-17 00:36:08 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-01-17 00:36:08 +0000
commitd25a27abba89ade8039cc8baabce19e34865ee89 (patch)
tree6a51bd5143809af16517a1236258bea9e4a1b38d /spec
parentd1417ff8fabe8a99dc6c21830b7b3169bb03aa64 (diff)
call rb_str_modify to make a copy unshared
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec')
-rw-r--r--spec/ruby/optional/capi/ext/rubyspec.h1
-rw-r--r--spec/ruby/optional/capi/ext/string_spec.c11
-rw-r--r--spec/ruby/optional/capi/string_spec.rb3
3 files changed, 14 insertions, 1 deletions
diff --git a/spec/ruby/optional/capi/ext/rubyspec.h b/spec/ruby/optional/capi/ext/rubyspec.h
index e5a90bfc88..63691d62fd 100644
--- a/spec/ruby/optional/capi/ext/rubyspec.h
+++ b/spec/ruby/optional/capi/ext/rubyspec.h
@@ -572,6 +572,7 @@
#define HAVE_RB_STRING 1
#define HAVE_SAFE_STRING_VALUE 1
#define HAVE_RB_STRING_VALUE_CSTR 1
+#define HAVE_RB_STR_MODIFY 1
/* Struct */
#define HAVE_RB_STRUCT_AREF 1
diff --git a/spec/ruby/optional/capi/ext/string_spec.c b/spec/ruby/optional/capi/ext/string_spec.c
index a6ce02b25c..6650034ef1 100644
--- a/spec/ruby/optional/capi/ext/string_spec.c
+++ b/spec/ruby/optional/capi/ext/string_spec.c
@@ -504,6 +504,13 @@ static VALUE string_spec_rb_string_value_cstr(VALUE self, VALUE str) {
}
#endif
+#ifdef HAVE_RB_STR_MODIFY
+static VALUE string_spec_rb_str_modify(VALUE self, VALUE str) {
+ rb_str_modify(str);
+ return str;
+}
+#endif
+
void Init_string_spec(void) {
VALUE cls;
cls = rb_define_class("CApiStringSpecs", rb_cObject);
@@ -744,6 +751,10 @@ void Init_string_spec(void) {
#ifdef HAVE_RB_STRING_VALUE_CSTR
rb_define_method(cls, "rb_string_value_cstr", string_spec_rb_string_value_cstr, 1);
#endif
+
+#ifdef HAVE_RB_STR_MODIFY
+ rb_define_method(cls, "rb_str_modify", string_spec_rb_str_modify, 1);
+#endif
}
#ifdef __cplusplus
}
diff --git a/spec/ruby/optional/capi/string_spec.rb b/spec/ruby/optional/capi/string_spec.rb
index 2344dd37d7..cfd60c2593 100644
--- a/spec/ruby/optional/capi/string_spec.rb
+++ b/spec/ruby/optional/capi/string_spec.rb
@@ -36,7 +36,8 @@ describe "C-API String function" do
before :each do
# Make a completely new copy of the string
# for every example (#dup doesn't cut it).
- @str = "abcdefghij"[0..-1]
+ @str = "abcdefghij"
+ @s.rb_str_modify(@str)
end
it "reduces the size of the string" do