summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2026-02-02 19:44:02 +0100
committergit <svn-admin@ruby-lang.org>2026-02-03 07:24:37 +0000
commit41238ccd85301b7d287a137d2fd8a94687f45784 (patch)
tree9068d3882f42bb518388cef613051ebe05ea7db3 /ext
parent066332465b927cf2d2b05d0d77014d7e3f48d933 (diff)
[ruby/json] fbuffer_append_str: assume string
https://github.com/ruby/json/commit/fff25c9f4b
Diffstat (limited to 'ext')
-rw-r--r--ext/json/fbuffer/fbuffer.h14
-rw-r--r--ext/json/generator/generator.c2
2 files changed, 9 insertions, 7 deletions
diff --git a/ext/json/fbuffer/fbuffer.h b/ext/json/fbuffer/fbuffer.h
index 752d153b31..8ce029a8c4 100644
--- a/ext/json/fbuffer/fbuffer.h
+++ b/ext/json/fbuffer/fbuffer.h
@@ -161,23 +161,25 @@ static inline void fbuffer_append_reserved_char(FBuffer *fb, char chr)
static void fbuffer_append_str(FBuffer *fb, VALUE str)
{
- const char *newstr = StringValuePtr(str);
- unsigned long len = RSTRING_LEN(str);
+ const char *ptr;
+ unsigned long len;
+ RSTRING_GETMEM(str, ptr, len);
- fbuffer_append(fb, newstr, len);
+ fbuffer_append(fb, ptr, len);
}
static void fbuffer_append_str_repeat(FBuffer *fb, VALUE str, size_t repeat)
{
- const char *newstr = StringValuePtr(str);
- unsigned long len = RSTRING_LEN(str);
+ const char *ptr;
+ unsigned long len;
+ RSTRING_GETMEM(str, ptr, len);
fbuffer_inc_capa(fb, repeat * len);
while (repeat) {
#if JSON_DEBUG
fb->requested = len;
#endif
- fbuffer_append_reserved(fb, newstr, len);
+ fbuffer_append_reserved(fb, ptr, len);
repeat--;
}
}
diff --git a/ext/json/generator/generator.c b/ext/json/generator/generator.c
index ad9259864e..3290de4015 100644
--- a/ext/json/generator/generator.c
+++ b/ext/json/generator/generator.c
@@ -1374,7 +1374,7 @@ static void generate_json_fixnum(FBuffer *buffer, struct generate_json_data *dat
static void generate_json_bignum(FBuffer *buffer, struct generate_json_data *data, VALUE obj)
{
VALUE tmp = rb_funcall(obj, i_to_s, 0);
- fbuffer_append_str(buffer, tmp);
+ fbuffer_append_str(buffer, StringValue(tmp));
}
#ifdef RUBY_INTEGER_UNIFICATION