summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDustin Pho <dpho@vt.edu>2016-10-02 07:56:01 -0700
committerJens Geyer <jensg@apache.org>2016-10-07 19:03:40 +0200
commitd6bcb265bb45917ddefac155ae71cf17ea60f9bc (patch)
tree8f4dff6bdd4dbe0811e94cc9915643e3dc05bb0b
parent548403eeab40ca8c8217fce2dade26876b41b152 (diff)
downloadthrift-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.cc3
-rw-r--r--compiler/cpp/src/thrift/generate/t_javame_generator.cc3
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;