If a function contained a block with a lower address than it's entry a
integer overflow occured resulting in bad layout. Handled now
correctly.
Disassembler * dis = manager->getDisassembler();
BasicBlock * block = dis->getBasicBlock(fun->getStartAddress());
+ uint64_t start_address(std::numeric_limits<uint64_t>::max());
+ for (auto b : fun->blocks()) {
+ if (b.first < start_address)
+ start_address = b.first;
+ }
+
local__add_basic_block(block, manager->getDisassembler(), blocks, scene,
- block->getStartAddress(), 100);
+ start_address, 100);
QGraphicsView * view = new QGraphicsView(scene);
w->addTab(view, "CFG");