aboutsummaryrefslogtreecommitdiff
path: root/ruby
diff options
context:
space:
mode:
author@rubynerd <x@rubynerd.net>2016-12-19 23:48:48 +0000
committer@rubynerd <x@rubynerd.net>2016-12-19 23:49:16 +0000
commitc64830bbca7ce327ad38e51ea4ddf96328804604 (patch)
tree8fbef02c1af8b13a79bfee1ef22cc3d968247c67 /ruby
parentf39cf88a347767d25572f7344eab44359d872925 (diff)
downloadprotobuf-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')
-rw-r--r--ruby/ext/google/protobuf_c/storage.c2
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");
}