summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authorYusuke Endoh <mame@ruby-lang.org>2021-10-29 01:57:29 +0900
committerYusuke Endoh <mame@ruby-lang.org>2021-10-29 01:57:29 +0900
commitacb2f86caa384fd7a32d4fe682b9fa719015c1c7 (patch)
tree095aab649b25c3e9453d42850b043e977244998b /string.c
parentc75df796d875b02d7b97974c7fe840f0a9de171f (diff)
string.c: Add some comments about STR flags
Diffstat (limited to 'string.c')
-rw-r--r--string.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/string.c b/string.c
index b815b12c54..64f290d62c 100644
--- a/string.c
+++ b/string.c
@@ -89,12 +89,16 @@ VALUE rb_cSymbol;
* other strings that rely on this string's buffer)
* 6: STR_BORROWED (when RSTRING_NOEMBED==1 && klass==0, unsafe to recycle
* early, specific to rb_str_tmp_frozen_{acquire,release})
- * 7: STR_TMPLOCK
+ * 7: STR_TMPLOCK (set when a pointer to the buffer is passed to syscall
+ * such as read(2). Any modification and realloc is prohibited)
+ *
* 8-9: ENC_CODERANGE (2 bits)
* 10-16: ENCODING (7 bits == 128)
* 17: RSTRING_FSTR
- * 18: STR_NOFREE
- * 19: STR_FAKESTR
+ * 18: STR_NOFREE (do not free this string's buffer when a String is freed.
+ * used for a string object based on C string literal)
+ * 19: STR_FAKESTR (when RVALUE is not managed by GC. Typically, the string
+ * object header is temporarily allocated on C stack)
*/
#define RUBY_MAX_CHAR_LEN 16