From 167ada8da7299fd27314fadad3797b48cee442b1 Mon Sep 17 00:00:00 2001 From: Florian Frank Date: Mon, 29 Apr 2019 15:56:14 +0200 Subject: Only attempt to resize strings not other objects --- ext/json/ext/parser/parser.c | 2 +- ext/json/ext/parser/parser.rl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/json/ext/parser/parser.c b/ext/json/ext/parser/parser.c index d2e4eb6..3a9dc93 100644 --- a/ext/json/ext/parser/parser.c +++ b/ext/json/ext/parser/parser.c @@ -1658,7 +1658,7 @@ case 7: if (json->symbolize_names && json->parsing_name) { *result = rb_str_intern(*result); - } else { + } else if (RB_TYPE_P(*result, T_STRING)) { rb_str_resize(*result, RSTRING_LEN(*result)); } if (cs >= JSON_string_first_final) { diff --git a/ext/json/ext/parser/parser.rl b/ext/json/ext/parser/parser.rl index 29900a4..4c84865 100644 --- a/ext/json/ext/parser/parser.rl +++ b/ext/json/ext/parser/parser.rl @@ -553,7 +553,7 @@ static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *resu if (json->symbolize_names && json->parsing_name) { *result = rb_str_intern(*result); - } else { + } else if (RB_TYPE_P(*result, T_STRING)) { rb_str_resize(*result, RSTRING_LEN(*result)); } if (cs >= JSON_string_first_final) { -- cgit v1.2.1