@@ -251,7 +251,9 @@ static void rvalue_stack_free(void *ptr)
251251 rvalue_stack * stack = (rvalue_stack * )ptr ;
252252 if (stack ) {
253253 ruby_xfree (stack -> ptr );
254+ #ifndef HAVE_RUBY_TYPED_EMBEDDABLE
254255 ruby_xfree (stack );
256+ #endif
255257 }
256258}
257259
@@ -262,14 +264,13 @@ static size_t rvalue_stack_memsize(const void *ptr)
262264}
263265
264266static const rb_data_type_t JSON_Parser_rvalue_stack_type = {
265- "JSON::Ext::Parser/rvalue_stack" ,
266- {
267+ . wrap_struct_name = "JSON::Ext::Parser/rvalue_stack" ,
268+ . function = {
267269 .dmark = rvalue_stack_mark ,
268270 .dfree = rvalue_stack_free ,
269271 .dsize = rvalue_stack_memsize ,
270272 },
271- 0 , 0 ,
272- RUBY_TYPED_FREE_IMMEDIATELY ,
273+ .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE ,
273274};
274275
275276static rvalue_stack * rvalue_stack_spill (rvalue_stack * old_stack , VALUE * handle , rvalue_stack * * stack_ref )
@@ -1608,7 +1609,9 @@ static void JSON_ParserConfig_mark(void *ptr)
16081609static void JSON_ParserConfig_free (void * ptr )
16091610{
16101611 JSON_ParserConfig * config = ptr ;
1612+ #ifndef HAVE_RUBY_TYPED_EMBEDDABLE
16111613 ruby_xfree (config );
1614+ #endif
16121615}
16131616
16141617static size_t JSON_ParserConfig_memsize (const void * ptr )
@@ -1617,14 +1620,13 @@ static size_t JSON_ParserConfig_memsize(const void *ptr)
16171620}
16181621
16191622static const rb_data_type_t JSON_ParserConfig_type = {
1620- "JSON::Ext::Parser/ParserConfig" ,
1621- {
1623+ . wrap_struct_name = "JSON::Ext::Parser/ParserConfig" ,
1624+ . function = {
16221625 JSON_ParserConfig_mark ,
16231626 JSON_ParserConfig_free ,
16241627 JSON_ParserConfig_memsize ,
16251628 },
1626- 0 , 0 ,
1627- RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE ,
1629+ .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE ,
16281630};
16291631
16301632static VALUE cJSON_parser_s_allocate (VALUE klass )
0 commit comments