Fix compilation of an assert.
authorDavid Neto <dneto@google.com>
Mon, 23 Nov 2015 19:17:35 +0000 (14:17 -0500)
committerDavid Neto <dneto@google.com>
Mon, 23 Nov 2015 19:25:40 +0000 (14:25 -0500)
The asserts check the length of the endian-converted words
vector with the reported number of words in the instruction.

source/binary.cpp

index c589b6b..49daf42 100755 (executable)
@@ -377,7 +377,15 @@ spv_result_t Parser::parseInstruction() {
                         << " words, but found " << _.word_index - inst_offset
                         << " words instead.";
   }
-  assert(inst_word_count == words.size());
+
+  // Check the computed length of the endian-converted words vector against
+  // the declared number of words in the instruction.  If endian conversion
+  // is required, then they should match.  If no endian conversion was
+  // performed, then the vector only contains the initial opcode/word-count
+  // word.
+  assert(!_.requires_endian_conversion ||
+         (inst_word_count == endian_converted_words.size()));
+  assert(_.requires_endian_conversion || (endian_converted_words.size() == 1));
 
   recordNumberType(inst_offset, &inst);