summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
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