From fef70f098370b1720e4573e31403037dbd6390d4 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Fri, 21 Jun 2019 12:50:57 -0700 Subject: [PATCH] ConcreteNetwork::replaceCell failed if port order differed cont. --- network/ConcreteNetwork.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/network/ConcreteNetwork.cc b/network/ConcreteNetwork.cc index a2a986c4..fb0ea0c6 100644 --- a/network/ConcreteNetwork.cc +++ b/network/ConcreteNetwork.cc @@ -1152,13 +1152,15 @@ ConcreteNetwork::replaceCell(Instance *inst, int port_count = ccell->portBitCount(); ConcreteInstance *cinst = reinterpret_cast(inst); ConcretePin **pins = cinst->pins_; - ConcretePin **rpins = new ConcretePin*[port_count]; + ConcretePin **rpins = new ConcretePin*[port_count]{nullptr}; for (int i = 0; i < port_count; i++) { ConcretePin *cpin = pins[i]; - ConcretePort *pin_cport = reinterpret_cast(cpin->port()); - ConcretePort *cport = ccell->findPort(pin_cport->name()); - rpins[cport->pinIndex()] = cpin; - cpin->port_ = cport; + if (cpin) { + ConcretePort *pin_cport = reinterpret_cast(cpin->port()); + ConcretePort *cport = ccell->findPort(pin_cport->name()); + rpins[cport->pinIndex()] = cpin; + cpin->port_ = cport; + } } delete [] pins; cinst->pins_ = rpins;