From 87bd4029cfdb77196748063277bd7bb172f5ff54 Mon Sep 17 00:00:00 2001 From: Jason Neufeld Date: Tue, 16 Sep 2014 18:40:11 -0700 Subject: [PATCH] Includes a MessageNano subclass's name's hashCode in hashCode calculations. In the current implementation, a message with the same amount of null or equal-valued fields as a different message type will have the same hashCode. This adds more variety by including the hashCode of the class's name in the hashCode calculations. Change-Id: I284e3e6d198ad8037815948d1f65686465ffd623 Signed-off-by: Jason Neufeld --- src/google/protobuf/compiler/javanano/javanano_message.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/google/protobuf/compiler/javanano/javanano_message.cc b/src/google/protobuf/compiler/javanano/javanano_message.cc index 7a2b4a068..cc44cd354 100644 --- a/src/google/protobuf/compiler/javanano/javanano_message.cc +++ b/src/google/protobuf/compiler/javanano/javanano_message.cc @@ -523,6 +523,7 @@ void MessageGenerator::GenerateHashCode(io::Printer* printer) { printer->Indent(); printer->Print("int result = 17;\n"); + printer->Print("result = 31 * result + getClass().getName().hashCode();\n"); for (int i = 0; i < descriptor_->field_count(); i++) { const FieldDescriptor* field = descriptor_->field(i); field_generators_.get(field).GenerateHashCodeCode(printer);