Fixed memory corruption with new SigSpec API in proc_mux

This commit is contained in:
Clifford Wolf 2014-07-22 22:54:39 +02:00
parent f80da7b41d
commit 65a939cb27
1 changed files with 3 additions and 7 deletions

View File

@ -68,20 +68,16 @@ static RTLIL::SigSpec gen_cmp(RTLIL::Module *mod, const RTLIL::SigSpec &signal,
for (auto comp : compare)
{
RTLIL::SigSpec sig = signal;
sig.expand();
comp.expand();
// get rid of don't-care bits
assert(sig.size() == comp.size());
for (int i = 0; i < comp.size(); i++)
if (comp.chunks()[i].wire == NULL && comp.chunks()[i].data.bits[0] == RTLIL::State::Sa) {
sig.remove(i, 1);
comp.remove(i--, 1);
if (comp[i] == RTLIL::State::Sa) {
sig.remove(i);
comp.remove(i--);
}
if (comp.size() == 0)
return RTLIL::SigSpec();
sig.optimize();
comp.optimize();
if (sig.size() == 1 && comp == RTLIL::SigSpec(1,1))
{