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, 8 insertions, 8 deletions
diff --git a/spec/ruby/optional/capi/ext/string_spec.c b/spec/ruby/optional/capi/ext/string_spec.c
index 6ad0b46ae4..4976dc92c4 100644
--- a/spec/ruby/optional/capi/ext/string_spec.c
+++ b/spec/ruby/optional/capi/ext/string_spec.c
@@ -14,14 +14,9 @@ extern "C" {
* On TruffleRuby RSTRING_PTR and the bytes remain in managed memory
* until they must be written to native memory.
* In some specs we want to test using the native memory. */
-char* NATIVE_RSTRING_PTR(VALUE str) {
- char* ptr = RSTRING_PTR(str);
- char** native = malloc(sizeof(char*));
- *native = ptr;
- ptr = *native;
- free(native);
- return ptr;
-}
+#ifndef NATIVE_RSTRING_PTR
+#define NATIVE_RSTRING_PTR(str) RSTRING_PTR(str)
+#endif
VALUE string_spec_rb_cstr2inum(VALUE self, VALUE str, VALUE inum) {
int num = FIX2INT(inum);
@@ -124,6 +119,10 @@ VALUE string_spec_rb_str_conv_enc_opts(VALUE self, VALUE str, VALUE from, VALUE
return rb_str_conv_enc_opts(str, from_enc, to_enc, FIX2INT(ecflags), ecopts);
}
+VALUE string_spec_rb_str_drop_bytes(VALUE self, VALUE str, VALUE len) {
+ return rb_str_drop_bytes(str, NUM2LONG(len));
+}
+
VALUE string_spec_rb_str_export(VALUE self, VALUE str) {
return rb_str_export(str);
}
@@ -427,6 +426,7 @@ void Init_string_spec(void) {
rb_define_method(cls, "rb_str_cmp", string_spec_rb_str_cmp, 2);
rb_define_method(cls, "rb_str_conv_enc", string_spec_rb_str_conv_enc, 3);
rb_define_method(cls, "rb_str_conv_enc_opts", string_spec_rb_str_conv_enc_opts, 5);
+ rb_define_method(cls, "rb_str_drop_bytes", string_spec_rb_str_drop_bytes, 2);
rb_define_method(cls, "rb_str_export", string_spec_rb_str_export, 1);
rb_define_method(cls, "rb_str_export_locale", string_spec_rb_str_export_locale, 1);
rb_define_method(cls, "rb_str_dup", string_spec_rb_str_dup, 1);