diff options
Diffstat (limited to 'ruby/ext/google/protobuf_c/message.c')
-rw-r--r-- | ruby/ext/google/protobuf_c/message.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/ruby/ext/google/protobuf_c/message.c b/ruby/ext/google/protobuf_c/message.c index 42910bfe..bc73d48c 100644 --- a/ruby/ext/google/protobuf_c/message.c +++ b/ruby/ext/google/protobuf_c/message.c @@ -44,6 +44,11 @@ void Message_mark(void* _self) { } void Message_free(void* self) { + stringsink* unknown = ((MessageHeader *)self)->unknown_fields; + if (unknown != NULL) { + stringsink_uninit(unknown); + free(unknown); + } xfree(self); } @@ -67,6 +72,8 @@ VALUE Message_alloc(VALUE klass) { msg->descriptor = desc; rb_ivar_set(ret, descriptor_instancevar_interned, descriptor); + msg->unknown_fields = NULL; + layout_init(desc->layout, Message_data(msg)); return ret; |