Skip to content

Commit d69f482

Browse files
committed
Fixed message equality in cases where the message type is different.
If the message types are different, equality comparison must return false.
1 parent fd8aabf commit d69f482

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

ruby/ext/google/protobuf_c/message.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -704,7 +704,8 @@ static VALUE Message_eq(VALUE _self, VALUE _other) {
704704
Message* self = ruby_to_Message(_self);
705705
Message* other = ruby_to_Message(_other);
706706

707-
return Message_Equal(self->msg, other->msg, self->msgdef)
707+
return self->msgdef == other->msgdef &&
708+
Message_Equal(self->msg, other->msg, self->msgdef)
708709
? Qtrue
709710
: Qfalse;
710711
}

ruby/tests/common_tests.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -687,12 +687,13 @@ def test_deep_copy
687687
assert m.repeated_msg[0].object_id != m2.repeated_msg[0].object_id
688688
end
689689

690-
def test_eq
690+
def test_message_eq
691691
m = proto_module::TestMessage.new(:optional_int32 => 42,
692692
:repeated_int32 => [1, 2, 3])
693693
m2 = proto_module::TestMessage.new(:optional_int32 => 43,
694694
:repeated_int32 => [1, 2, 3])
695695
assert m != m2
696+
assert_not_equal proto_module::TestMessage.new, proto_module::TestMessage2.new
696697
end
697698

698699
def test_enum_lookup

0 commit comments

Comments
 (0)