diff options
author | @rubynerd <x@rubynerd.net> | 2016-12-19 23:48:48 +0000 |
---|---|---|
committer | @rubynerd <x@rubynerd.net> | 2016-12-19 23:49:16 +0000 |
commit | c64830bbca7ce327ad38e51ea4ddf96328804604 (patch) | |
tree | 8fbef02c1af8b13a79bfee1ef22cc3d968247c67 /ruby/ext/google/protobuf_c | |
parent | f39cf88a347767d25572f7344eab44359d872925 (diff) | |
download | protobuf-c64830bbca7ce327ad38e51ea4ddf96328804604.tar.gz protobuf-c64830bbca7ce327ad38e51ea4ddf96328804604.tar.bz2 protobuf-c64830bbca7ce327ad38e51ea4ddf96328804604.zip |
unwrap descriptor class before comparison of RepeatedField types
self->field_type_class returns the correct Ruby class, get_def_obj
returns the Descriptor object used to generate the Ruby class via
msgclass, so to compare the two types we get the msgclass from the
descriptor.
Diffstat (limited to 'ruby/ext/google/protobuf_c')
-rw-r--r-- | ruby/ext/google/protobuf_c/storage.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/ruby/ext/google/protobuf_c/storage.c b/ruby/ext/google/protobuf_c/storage.c index 3ff2bda6..8e474244 100644 --- a/ruby/ext/google/protobuf_c/storage.c +++ b/ruby/ext/google/protobuf_c/storage.c @@ -598,7 +598,7 @@ static void check_repeated_field_type(VALUE val, const upb_fielddef* field) { if (self->field_type == UPB_TYPE_MESSAGE || self->field_type == UPB_TYPE_ENUM) { if (self->field_type_class != - get_def_obj(upb_fielddef_subdef(field))) { + Descriptor_msgclass(get_def_obj(upb_fielddef_subdef(field)))) { rb_raise(rb_eTypeError, "Repeated field array has wrong message/enum class"); } |