diff options
| author | Jean Boussier <jean.boussier@gmail.com> | 2026-02-02 19:44:02 +0100 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2026-02-03 07:24:37 +0000 |
| commit | 41238ccd85301b7d287a137d2fd8a94687f45784 (patch) | |
| tree | 9068d3882f42bb518388cef613051ebe05ea7db3 /ext | |
| parent | 066332465b927cf2d2b05d0d77014d7e3f48d933 (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.h | 14 | ||||
| -rw-r--r-- | ext/json/generator/generator.c | 2 |
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 |
