| 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;
|
| }
|
|
|