diff options
author | David Robillard <d@drobilla.net> | 2022-05-26 23:07:24 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2022-05-26 23:22:40 -0400 |
commit | 6ff13ee2a86a516f27fa80bc9253781dfd3c7787 (patch) | |
tree | 588f69eb7e18c3ef8f040dc0ff28d0de5e6f9ee4 | |
parent | 4a21f42341a9195a3aab5a0281c47740c8bedbc2 (diff) | |
download | patchage-6ff13ee2a86a516f27fa80bc9253781dfd3c7787.tar.gz patchage-6ff13ee2a86a516f27fa80bc9253781dfd3c7787.tar.bz2 patchage-6ff13ee2a86a516f27fa80bc9253781dfd3c7787.zip |
Avoid potential null dereferences
As judged by GCC anyway.
-rw-r--r-- | src/Canvas.cpp | 5 | ||||
-rw-r--r-- | src/Patchage.cpp | 8 | ||||
-rw-r--r-- | src/Reactor.cpp | 4 |
3 files changed, 12 insertions, 5 deletions
diff --git a/src/Canvas.cpp b/src/Canvas.cpp index 6b10128..d86049d 100644 --- a/src/Canvas.cpp +++ b/src/Canvas.cpp @@ -312,7 +312,10 @@ disconnect_edge(GanvEdge* edge, void* data) { auto* canvas = static_cast<Canvas*>(data); Ganv::Edge* edgemm = Glib::wrap(edge); - canvas->on_disconnect(edgemm->get_tail(), edgemm->get_head()); + + if (canvas && edgemm) { + canvas->on_disconnect(edgemm->get_tail(), edgemm->get_head()); + } } bool diff --git a/src/Patchage.cpp b/src/Patchage.cpp index 86d5dbf..7d10abf 100644 --- a/src/Patchage.cpp +++ b/src/Patchage.cpp @@ -639,9 +639,11 @@ update_edge_color(GanvEdge* edge, void* data) auto* patchage = static_cast<Patchage*>(data); Ganv::Edge* edgemm = Glib::wrap(edge); - auto* tail = dynamic_cast<CanvasPort*>((edgemm)->get_tail()); - if (tail) { - edgemm->set_color(patchage->conf().get_port_color(tail->type())); + if (edgemm) { + auto* tail = dynamic_cast<CanvasPort*>((edgemm)->get_tail()); + if (tail) { + edgemm->set_color(patchage->conf().get_port_color(tail->type())); + } } } diff --git a/src/Reactor.cpp b/src/Reactor.cpp index 6b141f8..b7458f2 100644 --- a/src/Reactor.cpp +++ b/src/Reactor.cpp @@ -89,7 +89,9 @@ Reactor::operator()(const action::DisconnectClient& action) { if (CanvasModule* mod = find_module(action.client, action.direction)) { for (Ganv::Port* p : *mod) { - p->disconnect(); + if (p) { + p->disconnect(); + } } } } |