[前][次][番号順一覧][スレッド一覧]

ruby-changes:63486

From: Alan <ko1@a...>
Date: Sat, 31 Oct 2020 08:47:34 +0900 (JST)
Subject: [ruby-changes:63486] 670e288d65 (master): Add warning for str_new_static functions

https://git.ruby-lang.org/ruby.git/commit/?id=670e288d65

From 670e288d653853de385798bb31044f9f478d9543 Mon Sep 17 00:00:00 2001
From: Alan Wu <XrXr@u...>
Date: Sat, 24 Oct 2020 14:33:46 -0400
Subject: Add warning for str_new_static functions

Many functions in string.c assume that capa + termlen to be readable
memory. Add comment in header to communicate this to extension authors.

See also: comment in str_fill_term()

diff --git a/include/ruby/internal/intern/string.h b/include/ruby/internal/intern/string.h
index bfb5c69..f2f563e 100644
--- a/include/ruby/internal/intern/string.h
+++ b/include/ruby/internal/intern/string.h
@@ -66,9 +66,14 @@ VALUE rb_usascii_str_new(const char*, long); https://github.com/ruby/ruby/blob/trunk/include/ruby/internal/intern/string.h#L66
 VALUE rb_usascii_str_new_cstr(const char*);
 VALUE rb_utf8_str_new(const char*, long);
 VALUE rb_utf8_str_new_cstr(const char*);
-VALUE rb_str_new_static(const char *, long);
-VALUE rb_usascii_str_new_static(const char *, long);
-VALUE rb_utf8_str_new_static(const char *, long);
+/**
+ *  *_str_new_static functions are intended for C string literals.
+ *  They require memory in the range [ptr, ptr+len] to always be readable.
+ *  Note that this range covers a total of len + 1 bytes.
+ */
+VALUE rb_str_new_static(const char *ptr, long len);
+VALUE rb_usascii_str_new_static(const char *ptr, long len);
+VALUE rb_utf8_str_new_static(const char *ptr, long len);
 void rb_str_free(VALUE);
 void rb_str_shared_replace(VALUE, VALUE);
 VALUE rb_str_buf_append(VALUE, VALUE);
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]