Index: third_party/protobuf/ruby/ext/google/protobuf_c/defs.c |
diff --git a/third_party/protobuf/ruby/ext/google/protobuf_c/defs.c b/third_party/protobuf/ruby/ext/google/protobuf_c/defs.c |
index 7e0cd14cef0a8f6ee1df3380cc5187658af27223..7e93bafb33c4a3b15746491d74f9163a049e2728 100644 |
--- a/third_party/protobuf/ruby/ext/google/protobuf_c/defs.c |
+++ b/third_party/protobuf/ruby/ext/google/protobuf_c/defs.c |
@@ -243,6 +243,10 @@ void Descriptor_free(void* _self) { |
if (self->fill_method) { |
upb_pbdecodermethod_unref(self->fill_method, &self->fill_method); |
} |
+ if (self->json_fill_method) { |
+ upb_json_parsermethod_unref(self->json_fill_method, |
+ &self->json_fill_method); |
+ } |
if (self->pb_serialize_handlers) { |
upb_handlers_unref(self->pb_serialize_handlers, |
&self->pb_serialize_handlers); |
@@ -251,6 +255,10 @@ void Descriptor_free(void* _self) { |
upb_handlers_unref(self->json_serialize_handlers, |
&self->json_serialize_handlers); |
} |
+ if (self->json_serialize_handlers_preserve) { |
+ upb_handlers_unref(self->json_serialize_handlers_preserve, |
+ &self->json_serialize_handlers_preserve); |
+ } |
xfree(self); |
} |
@@ -271,8 +279,10 @@ VALUE Descriptor_alloc(VALUE klass) { |
self->layout = NULL; |
self->fill_handlers = NULL; |
self->fill_method = NULL; |
+ self->json_fill_method = NULL; |
self->pb_serialize_handlers = NULL; |
self->json_serialize_handlers = NULL; |
+ self->json_serialize_handlers_preserve = NULL; |
self->typeclass_references = rb_ary_new(); |
return ret; |
} |