From 8dead90304def903d9be385da9f5e8a6488ed970 Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Sun, 8 Mar 2026 09:43:26 +0100 Subject: [PATCH] Add missing GC_GUARD in `fbuffer_append_str` Ref: fff25c9f4b9c590a59ed4a2ec3c545121db844d3 `StringValuePtr` use `volatile` so the compiler is less likely to re-use the register. But regardless, we should GC_GUARD `str` as we no longer reference it after `GETMEM`. --- ext/json/ext/fbuffer/fbuffer.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ext/json/ext/fbuffer/fbuffer.h b/ext/json/ext/fbuffer/fbuffer.h index d5fd5ea2..9660e70d 100644 --- a/ext/json/ext/fbuffer/fbuffer.h +++ b/ext/json/ext/fbuffer/fbuffer.h @@ -166,6 +166,7 @@ static void fbuffer_append_str(FBuffer *fb, VALUE str) RSTRING_GETMEM(str, ptr, len); fbuffer_append(fb, ptr, len); + RB_GC_GUARD(str); } static void fbuffer_append_str_repeat(FBuffer *fb, VALUE str, size_t repeat) @@ -182,6 +183,7 @@ static void fbuffer_append_str_repeat(FBuffer *fb, VALUE str, size_t repeat) fbuffer_append_reserved(fb, ptr, len); repeat--; } + RB_GC_GUARD(str); } static inline void fbuffer_append_char(FBuffer *fb, char newchr)