Added missing nullptr check in vector of union verifiers.
authorWouter van Oortmerssen <aardappel@gmail.com>
Thu, 28 Dec 2017 18:09:48 +0000 (10:09 -0800)
committerWouter van Oortmerssen <aardappel@gmail.com>
Thu, 28 Dec 2017 18:09:48 +0000 (10:09 -0800)
Change-Id: Iec720991e68ad27580537135bfd8eb4159333921
Tested: on Linux.

samples/monster_generated.h
src/idl_gen_cpp.cpp
tests/monster_test_generated.h
tests/union_vector/union_vector_generated.h

index 4c31d5e..baf3fe7 100644 (file)
@@ -548,6 +548,7 @@ inline bool VerifyEquipment(flatbuffers::Verifier &verifier, const void *obj, Eq
 }
 
 inline bool VerifyEquipmentVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
+  if (!values || !types) return !values && !types;
   if (values->size() != types->size()) return false;
   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
     if (!VerifyEquipment(
index 6420ba7..f582aa8 100644 (file)
@@ -1100,6 +1100,7 @@ class CppGenerator : public BaseGenerator {
     code_ += "";
 
     code_ += "inline " + UnionVectorVerifySignature(enum_def) + " {";
+    code_ += "  if (!values || !types) return !values && !types;";
     code_ += "  if (values->size() != types->size()) return false;";
     code_ += "  for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {";
     code_ += "    if (!Verify" + Name(enum_def) + "(";
index 14a2ae8..8f939cd 100644 (file)
@@ -1802,6 +1802,7 @@ inline bool VerifyAny(flatbuffers::Verifier &verifier, const void *obj, Any type
 }
 
 inline bool VerifyAnyVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
+  if (!values || !types) return !values && !types;
   if (values->size() != types->size()) return false;
   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
     if (!VerifyAny(
index 3222fb0..14c3cc9 100644 (file)
@@ -455,6 +455,7 @@ inline bool VerifyCharacter(flatbuffers::Verifier &verifier, const void *obj, Ch
 }
 
 inline bool VerifyCharacterVector(flatbuffers::Verifier &verifier, const flatbuffers::Vector<flatbuffers::Offset<void>> *values, const flatbuffers::Vector<uint8_t> *types) {
+  if (!values || !types) return !values && !types;
   if (values->size() != types->size()) return false;
   for (flatbuffers::uoffset_t i = 0; i < values->size(); ++i) {
     if (!VerifyCharacter(