Index: courgette/disassembler_elf_32.cc |
diff --git a/courgette/disassembler_elf_32.cc b/courgette/disassembler_elf_32.cc |
index fc4c3793c0fb08a53a3bba42794ea7b00c6c7ed4..bfd1ef4acdcbad747095928b07e7f906a2149c60 100644 |
--- a/courgette/disassembler_elf_32.cc |
+++ b/courgette/disassembler_elf_32.cc |
@@ -409,13 +409,13 @@ CheckBool DisassemblerElf32::ParseSimpleRegion( |
const uint8* start = OffsetToPointer(start_file_offset); |
const uint8* end = OffsetToPointer(end_file_offset); |
- const uint8* p = start; |
+ // Callers don't guarantee start < end |
+ if (start >= end) return true; |
- while (p < end) { |
- if (!program->EmitByteInstruction(*p)) |
- return false; |
- ++p; |
- } |
+ const ptrdiff_t len = end - start; // Works because vars are byte pointers |
+ |
+ if (!program->EmitBytesInstruction(start, len)) |
+ return false; |
return true; |
} |