diff options
author | Alan Wu <XrXr@users.noreply.github.com> | 2020-10-24 14:33:46 -0400 |
---|---|---|
committer | Alan Wu <XrXr@users.noreply.github.com> | 2020-10-30 19:47:14 -0400 |
commit | 670e288d653853de385798bb31044f9f478d9543 (patch) | |
tree | 0cce0ead451e5bfe017cecc7eaa502e387882718 /include/ruby/internal | |
parent | 520b86caf1b6e954c5fbe61a3a83bc5b4716c988 (diff) |
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()
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3698
Diffstat (limited to 'include/ruby/internal')
-rw-r--r-- | include/ruby/internal/intern/string.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/include/ruby/internal/intern/string.h b/include/ruby/internal/intern/string.h index bfb5c6928a..f2f563ebf9 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); 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); |