diff options
Diffstat (limited to 'cpp/src/slice2java/Gen.cpp')
-rw-r--r-- | cpp/src/slice2java/Gen.cpp | 24 |
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; } } } |