summaryrefslogtreecommitdiff
path: root/include/ruby/internal
diff options
context:
space:
mode:
authorÉtienne Barrié <[email protected]>2024-03-25 11:18:26 +0100
committerJean Boussier <[email protected]>2024-03-26 12:54:54 +0100
commit2b08406cd0db0042520fb0346544660e10a4d93c (patch)
tree9b649ec091c72b13227687d6e19079f67c14da5b /include/ruby/internal
parent8cfa8e87b2705fb356bbbb9ef719b5c5a54f9862 (diff)
Expose rb_str_chilled_p
Some extensions (like stringio) may need to differentiate between chilled strings and frozen strings. They can now use rb_str_chilled_p but must check for its presence since the function will be removed when chilled strings are removed. [Bug #20389] [Feature #20205] Co-authored-by: Jean Boussier <[email protected]>
Diffstat (limited to 'include/ruby/internal')
-rw-r--r--include/ruby/internal/intern/string.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/ruby/internal/intern/string.h b/include/ruby/internal/intern/string.h
index 952dc508c2..cfe0454ee8 100644
--- a/include/ruby/internal/intern/string.h
+++ b/include/ruby/internal/intern/string.h
@@ -602,6 +602,21 @@ VALUE rb_str_dup(VALUE str);
VALUE rb_str_resurrect(VALUE str);
/**
+ * Returns whether a string is chilled or not.
+ *
+ * This function is temporary and users must check for its presence using
+ * #ifdef HAVE_RB_STR_CHILLED_P. If HAVE_RB_STR_CHILLED_P is not defined, then
+ * strings can't be chilled.
+ *
+ * @param[in] str A string.
+ * @retval 1 The string is chilled.
+ * @retval 0 Otherwise.
+ */
+bool rb_str_chilled_p(VALUE str);
+
+#define HAVE_RB_STR_CHILLED_P 1
+
+/**
* Obtains a "temporary lock" of the string. This advisory locking mechanism
* prevents other cooperating threads from tampering the receiver. The same
* thing could be done via freeze mechanism, but this one can also be unlocked