summaryrefslogtreecommitdiff
path: root/cpp/src/slice2java/Gen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/slice2java/Gen.cpp')
-rw-r--r--cpp/src/slice2java/Gen.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp
index 6b35169b764..2564f7e904e 100644
--- a/cpp/src/slice2java/Gen.cpp
+++ b/cpp/src/slice2java/Gen.cpp
@@ -2997,11 +2997,14 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
case Builtin::KindObjectProxy:
case Builtin::KindLocalObject:
{
- out << nl << "if(" << memberName << " != _r." << memberName << " && " << memberName
- << " != null && !" << memberName << ".equals(_r." << memberName << "))";
+ out << nl << "if(" << memberName << " != _r." << memberName << ')';
+ out << sb;
+ out << nl << "if(" << memberName << " == null || _r." << memberName << " == null || !"
+ << memberName << ".equals(_r." << memberName << "))";
out << sb;
out << nl << "return false;";
out << eb;
+ out << eb;
break;
}
}
@@ -3021,14 +3024,20 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
{
if(hasTypeMetaData(seq, (*d)->getMetaData()))
{
- out << nl << "if(" << memberName << " != _r." << memberName << " && " << memberName
- << " != null && !" << memberName << ".equals(_r." << memberName << "))";
+ out << nl << "if(" << memberName << " != _r." << memberName << ')';
+ out << sb;
+ out << nl << "if(" << memberName << " == null || _r." << memberName << " == null || !"
+ << memberName << ".equals(_r." << memberName << "))";
out << sb;
out << nl << "return false;";
out << eb;
+ out << eb;
}
else
{
+ //
+ // Arrays.equals() handles null values.
+ //
out << nl << "if(!java.util.Arrays.equals(" << memberName << ", _r." << memberName << "))";
out << sb;
out << nl << "return false;";
@@ -3037,11 +3046,14 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
}
else
{
- out << nl << "if(" << memberName << " != _r." << memberName << " && " << memberName
- << " != null && !" << memberName << ".equals(_r." << memberName << "))";
+ out << nl << "if(" << memberName << " != _r." << memberName << ')';
+ out << sb;
+ out << nl << "if(" << memberName << " == null || _r." << memberName << " == null || !"
+ << memberName << ".equals(_r." << memberName << "))";
out << sb;
out << nl << "return false;";
out << eb;
+ out << eb;
}
}
}