From 78f67ae5bcf62138445cf25d5f1e21dd3f7caf66 Mon Sep 17 00:00:00 2001 From: airskywater <96818686+airskywater@users.noreply.github.com> Date: Sat, 24 Sep 2022 11:35:40 +0800 Subject: fix runtime segmentation fault disable null pointer dereference! --- common/kernel/timing.cc | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'common') diff --git a/common/kernel/timing.cc b/common/kernel/timing.cc index df0c3b5e..66de8dfc 100644 --- a/common/kernel/timing.cc +++ b/common/kernel/timing.cc @@ -300,6 +300,8 @@ void TimingAnalyser::identify_related_domains() [&](const NetInfo *ni, dict &drivers, delay_t delay_acc) { // Get driving cell and port const CellInfo *cell = ni->driver.cell; + if (nullptr == cell) return; + const IdString port = ni->driver.port; bool didGoUpstream = false; @@ -360,6 +362,9 @@ void TimingAnalyser::identify_related_domains() for (const auto &domain : domains) { const NetInfo *ni = ctx->nets.at(domain.key.clock).get(); + if (nullptr == ni) continue; + if (nullptr == ni->driver.cell) continue; + dict drivers; find_net_drivers(ni, drivers, 0); -- cgit v1.2.3 From c702e15a3fc9299499d7e362b180bc3ba778bbb4 Mon Sep 17 00:00:00 2001 From: airskywater <96818686+airskywater@users.noreply.github.com> Date: Sat, 24 Sep 2022 12:03:44 +0800 Subject: Add more sanity check for pointers --- common/kernel/timing.cc | 1 + 1 file changed, 1 insertion(+) (limited to 'common') diff --git a/common/kernel/timing.cc b/common/kernel/timing.cc index 66de8dfc..a9f64afa 100644 --- a/common/kernel/timing.cc +++ b/common/kernel/timing.cc @@ -299,6 +299,7 @@ void TimingAnalyser::identify_related_domains() std::function &, delay_t)> find_net_drivers = [&](const NetInfo *ni, dict &drivers, delay_t delay_acc) { // Get driving cell and port + if (nullptr == ni) return; const CellInfo *cell = ni->driver.cell; if (nullptr == cell) return; -- cgit v1.2.3 From 9572f6f03222188915633f0ab32de6d11a9a7622 Mon Sep 17 00:00:00 2001 From: airskywater <96818686+airskywater@users.noreply.github.com> Date: Sat, 24 Sep 2022 14:46:35 +0800 Subject: Modify code to meet the code style preferences --- common/kernel/timing.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'common') diff --git a/common/kernel/timing.cc b/common/kernel/timing.cc index a9f64afa..f046ba7d 100644 --- a/common/kernel/timing.cc +++ b/common/kernel/timing.cc @@ -299,9 +299,9 @@ void TimingAnalyser::identify_related_domains() std::function &, delay_t)> find_net_drivers = [&](const NetInfo *ni, dict &drivers, delay_t delay_acc) { // Get driving cell and port - if (nullptr == ni) return; + if (ni == nullptr) return; const CellInfo *cell = ni->driver.cell; - if (nullptr == cell) return; + if (cell == nullptr) return; const IdString port = ni->driver.port; @@ -363,8 +363,8 @@ void TimingAnalyser::identify_related_domains() for (const auto &domain : domains) { const NetInfo *ni = ctx->nets.at(domain.key.clock).get(); - if (nullptr == ni) continue; - if (nullptr == ni->driver.cell) continue; + if (ni == nullptr) continue; + if (ni->driver.cell == nullptr) continue; dict drivers; find_net_drivers(ni, drivers, 0); -- cgit v1.2.3