summaryrefslogtreecommitdiff
path: root/spec/ruby/optional/capi/ext
diff options
context:
space:
mode:
authorBenoit Daloze <eregontp@gmail.com>2020-06-01 00:30:41 +0200
committerBenoit Daloze <eregontp@gmail.com>2020-06-01 00:30:41 +0200
commitb7e1de117e20911ed86b229a4c2f912e469c6472 (patch)
tree6d1d71214d5279ad6997f45c66c393dd1ece94a1 /spec/ruby/optional/capi/ext
parentbb966b5dee23d9903849655b2db211d354adc141 (diff)
Make sure rb_enc_str_new_static() is used when enc is NULL
* The definition of the rb_enc_str_new_cstr macro depends on HAVE_BUILTIN___BUILTIN_CONSTANT_P. * It SEGV on mswin otherwise.
Diffstat (limited to 'spec/ruby/optional/capi/ext')
-rw-r--r--spec/ruby/optional/capi/ext/encoding_spec.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/spec/ruby/optional/capi/ext/encoding_spec.c b/spec/ruby/optional/capi/ext/encoding_spec.c
index 6e2e7cece1..2ee5c9c824 100644
--- a/spec/ruby/optional/capi/ext/encoding_spec.c
+++ b/spec/ruby/optional/capi/ext/encoding_spec.c
@@ -166,8 +166,13 @@ static VALUE encoding_spec_rb_enc_str_new_cstr(VALUE self, VALUE str, VALUE enc)
}
static VALUE encoding_spec_rb_enc_str_new_cstr_constant(VALUE self, VALUE enc) {
- rb_encoding *e = NIL_P(enc) ? NULL : rb_to_encoding(enc);
- return rb_enc_str_new_cstr("test string literal", e);
+ if (NIL_P(enc)) {
+ rb_encoding *e = NULL;
+ return rb_enc_str_new_static("test string literal", strlen("test string literal"), e);
+ } else {
+ rb_encoding *e = rb_to_encoding(enc);
+ return rb_enc_str_new_cstr("test string literal", e);
+ }
}
static VALUE encoding_spec_rb_enc_str_new(VALUE self, VALUE str, VALUE len, VALUE enc) {