diff options
author | Jason Neufeld <jneufeld@google.com> | 2014-09-16 18:40:11 -0700 |
---|---|---|
committer | Jason Neufeld <jneufeld@google.com> | 2014-09-16 18:40:11 -0700 |
commit | d0a645c06c723bb309b78af8598ac51d1567f773 (patch) | |
tree | 6f2126722b68644f6e93ab07ef8c8207b3dbe8eb | |
parent | c4e7b92fefce5b069f50659363c8878612303510 (diff) | |
download | external_protobuf-d0a645c06c723bb309b78af8598ac51d1567f773.zip external_protobuf-d0a645c06c723bb309b78af8598ac51d1567f773.tar.gz external_protobuf-d0a645c06c723bb309b78af8598ac51d1567f773.tar.bz2 |
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 <jneufeld@google.com>
-rw-r--r-- | src/google/protobuf/compiler/javanano/javanano_message.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/google/protobuf/compiler/javanano/javanano_message.cc b/src/google/protobuf/compiler/javanano/javanano_message.cc index 7a2b4a0..cc44cd3 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); |