diff --git a/imperative/python/src/graph_rt.h b/imperative/python/src/graph_rt.h index ee2a11da82e3b98a0634074fa8f82f23591c5e7b..c069e3a419f9333abc32147541f29d2e83650c56 100644 --- a/imperative/python/src/graph_rt.h +++ b/imperative/python/src/graph_rt.h @@ -25,7 +25,7 @@ class GraphNodePtr { T* m_node; public: GraphNodePtr(T* node) : - m_graph(node ? nullptr : node->owner_graph()->shared_from_this()), + m_graph(node ? node->owner_graph()->shared_from_this() : nullptr), m_node(node) {} T* operator->() {return m_node;} T& operator*() {return *m_node;} diff --git a/imperative/python/test/unit/test_cgtools.py b/imperative/python/test/unit/test_cgtools.py index e74f2db17c77be15db00191feca88ecde8af56a0..3f0f341e1f7f06d52e27939d093bbb75b626cc36 100644 --- a/imperative/python/test/unit/test_cgtools.py +++ b/imperative/python/test/unit/test_cgtools.py @@ -89,3 +89,12 @@ def test_graph_traversal(): _, var_idx = var2oprs[input_var.id][0] assert var_idx == 0 + + +def test_load_refcnt(): + graph = mgb_graph.Graph() + varnode = graph.make_const(0) + buf, _ = mgb_graph.dump_graph([varnode]) + graph, _, (varnode,) = mgb_graph.load_graph(io.BytesIO(buf)) + del graph + varnode.owner