diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-11-07 23:26:14 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-11-08 00:59:45 +0900 |
commit | 1910bd42477f928b539f09c7ba2ac444bd368fd4 (patch) | |
tree | c9cbdb2141963071ab7feb080428da14869aab9a /ext/-test-/string/fstring.c | |
parent | 9877f3ada8019f559dc0f86911ef4bbddddb5677 (diff) |
String for string literal is not resizable
Diffstat (limited to 'ext/-test-/string/fstring.c')
-rw-r--r-- | ext/-test-/string/fstring.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/ext/-test-/string/fstring.c b/ext/-test-/string/fstring.c index 2374319fe3..7ee14a8570 100644 --- a/ext/-test-/string/fstring.c +++ b/ext/-test-/string/fstring.c @@ -1,5 +1,6 @@ #include "ruby.h" #include "ruby/encoding.h" +#include "internal/string.h" VALUE rb_fstring(VALUE str); @@ -10,6 +11,14 @@ bug_s_fstring(VALUE self, VALUE str) } VALUE +bug_s_fstring_fake_str(VALUE self) +{ + static const char literal[] = "abcdefghijklmnopqrstuvwxyz"; + struct RString fake_str; + return rb_fstring(rb_setup_fake_str(&fake_str, literal, sizeof(literal) - 1, 0)); +} + +VALUE bug_s_rb_enc_interned_str(VALUE self, VALUE encoding) { return rb_enc_interned_str("foo", 3, RDATA(encoding)->data); @@ -25,6 +34,7 @@ void Init_string_fstring(VALUE klass) { rb_define_singleton_method(klass, "fstring", bug_s_fstring, 1); + rb_define_singleton_method(klass, "fstring_fake_str", bug_s_fstring_fake_str, 0); rb_define_singleton_method(klass, "rb_enc_interned_str", bug_s_rb_enc_interned_str, 1); rb_define_singleton_method(klass, "rb_enc_str_new", bug_s_rb_enc_str_new, 1); } |