Fixed message equality in cases where the message type is different.

If the message types are different, equality comparison must return
false.
pull/8434/head
Joshua Haberman 4 years ago
parent fd8aabf32d
commit d69f482883
  1. 3
      ruby/ext/google/protobuf_c/message.c
  2. 3
      ruby/tests/common_tests.rb

@ -704,7 +704,8 @@ static VALUE Message_eq(VALUE _self, VALUE _other) {
Message* self = ruby_to_Message(_self);
Message* other = ruby_to_Message(_other);
return Message_Equal(self->msg, other->msg, self->msgdef)
return self->msgdef == other->msgdef &&
Message_Equal(self->msg, other->msg, self->msgdef)
? Qtrue
: Qfalse;
}

@ -687,12 +687,13 @@ module CommonTests
assert m.repeated_msg[0].object_id != m2.repeated_msg[0].object_id
end
def test_eq
def test_message_eq
m = proto_module::TestMessage.new(:optional_int32 => 42,
:repeated_int32 => [1, 2, 3])
m2 = proto_module::TestMessage.new(:optional_int32 => 43,
:repeated_int32 => [1, 2, 3])
assert m != m2
assert_not_equal proto_module::TestMessage.new, proto_module::TestMessage2.new
end
def test_enum_lookup

Loading…
Cancel
Save