diff options
author | Dustin Pho <dpho@vt.edu> | 2016-10-02 07:56:01 -0700 |
---|---|---|
committer | Jens Geyer <jensg@apache.org> | 2016-10-07 19:03:40 +0200 |
commit | d6bcb265bb45917ddefac155ae71cf17ea60f9bc (patch) | |
tree | 8f4dff6bdd4dbe0811e94cc9915643e3dc05bb0b | |
parent | 548403eeab40ca8c8217fce2dade26876b41b152 (diff) | |
download | thrift-d6bcb265bb45917ddefac155ae71cf17ea60f9bc.tar.gz |
THRIFT-3868 Java struct equals should do identity check before field comparison
Client: Java, JavaME
Patch: Dustin Pho <dpho@vt.edu>
This closes #1106
-rw-r--r-- | compiler/cpp/src/thrift/generate/t_java_generator.cc | 3 | ||||
-rw-r--r-- | compiler/cpp/src/thrift/generate/t_javame_generator.cc | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/compiler/cpp/src/thrift/generate/t_java_generator.cc b/compiler/cpp/src/thrift/generate/t_java_generator.cc index 8b3c32626..4feb62608 100644 --- a/compiler/cpp/src/thrift/generate/t_java_generator.cc +++ b/compiler/cpp/src/thrift/generate/t_java_generator.cc @@ -1863,7 +1863,8 @@ void t_java_generator::generate_java_struct_equality(ofstream& out, t_struct* ts out << indent() << "public boolean equals(" << tstruct->get_name() << " that) {" << endl; indent_up(); - out << indent() << "if (that == null)" << endl << indent() << " return false;" << endl; + out << indent() << "if (that == null)" << endl << indent() << " return false;" << endl + << indent() << "if (this == that)" << endl << indent() << " return true;" << endl; const vector<t_field*>& members = tstruct->get_members(); vector<t_field*>::const_iterator m_iter; diff --git a/compiler/cpp/src/thrift/generate/t_javame_generator.cc b/compiler/cpp/src/thrift/generate/t_javame_generator.cc index aa7eccf63..94d66fce8 100644 --- a/compiler/cpp/src/thrift/generate/t_javame_generator.cc +++ b/compiler/cpp/src/thrift/generate/t_javame_generator.cc @@ -1189,7 +1189,8 @@ void t_javame_generator::generate_java_struct_equality(ofstream& out, t_struct* out << indent() << "public boolean equals(" << tstruct->get_name() << " that) {" << endl; indent_up(); - out << indent() << "if (that == null)" << endl << indent() << " return false;" << endl; + out << indent() << "if (that == null)" << endl << indent() << " return false;" << endl + << indent() << "if (this == that)" << endl << indent() << " return true;" << endl; const vector<t_field*>& members = tstruct->get_members(); vector<t_field*>::const_iterator m_iter; |