diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2019-01-17 00:36:08 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2019-01-17 00:36:08 +0000 |
commit | d25a27abba89ade8039cc8baabce19e34865ee89 (patch) | |
tree | 6a51bd5143809af16517a1236258bea9e4a1b38d /spec | |
parent | d1417ff8fabe8a99dc6c21830b7b3169bb03aa64 (diff) | |
download | ruby-d25a27abba89ade8039cc8baabce19e34865ee89.tar.gz |
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.h | 1 | ||||
-rw-r--r-- | spec/ruby/optional/capi/ext/string_spec.c | 11 | ||||
-rw-r--r-- | spec/ruby/optional/capi/string_spec.rb | 3 |
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 |