Fix more potential for undefined behaviour due to container invalidation

This commit is contained in:
Eddie Hung 2019-06-28 09:51:43 -07:00
parent 03705f69f4
commit 36e2eb06bb
1 changed files with 11 additions and 7 deletions

View File

@ -436,14 +436,18 @@ struct XAigerWriter
new_wire = module->addWire(wire_name, GetSize(wire)); new_wire = module->addWire(wire_name, GetSize(wire));
SigBit new_bit(new_wire, bit.offset); SigBit new_bit(new_wire, bit.offset);
module->connect(new_bit, bit); module->connect(new_bit, bit);
if (not_map.count(bit)) if (not_map.count(bit)) {
not_map[new_bit] = not_map.at(bit); auto a = not_map.at(bit);
else if (and_map.count(bit)) { not_map[new_bit] = a;
//and_map[new_bit] = and_map.at(bit); // Breaks gcc-4.8 }
and_map.insert(std::make_pair(new_bit, and_map.at(bit))); else if (and_map.count(bit)) {
auto a = and_map.at(bit);
and_map[new_bit] = a;
}
else if (alias_map.count(bit)) {
auto a = alias_map.at(bit);
alias_map[new_bit] = a;
} }
else if (alias_map.count(bit))
alias_map[new_bit] = alias_map.at(bit);
else else
alias_map[new_bit] = bit; alias_map[new_bit] = bit;
output_bits.erase(bit); output_bits.erase(bit);