aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Neufeld <jneufeld@google.com>2014-09-16 18:40:11 -0700
committerJason Neufeld <jneufeld@google.com>2014-09-16 18:40:11 -0700
commitd0a645c06c723bb309b78af8598ac51d1567f773 (patch)
tree6f2126722b68644f6e93ab07ef8c8207b3dbe8eb
parentc4e7b92fefce5b069f50659363c8878612303510 (diff)
downloadexternal_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.cc1
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);