Commit c64830bb authored by @rubynerd's avatar @rubynerd

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.
parent f39cf88a
...@@ -598,7 +598,7 @@ static void check_repeated_field_type(VALUE val, const upb_fielddef* field) { ...@@ -598,7 +598,7 @@ static void check_repeated_field_type(VALUE val, const upb_fielddef* field) {
if (self->field_type == UPB_TYPE_MESSAGE || if (self->field_type == UPB_TYPE_MESSAGE ||
self->field_type == UPB_TYPE_ENUM) { self->field_type == UPB_TYPE_ENUM) {
if (self->field_type_class != 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, rb_raise(rb_eTypeError,
"Repeated field array has wrong message/enum class"); "Repeated field array has wrong message/enum class");
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment