From 574bad76afec8e719072cc7397ae77069c8cf542 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Wed, 29 May 2013 00:11:03 +0000 Subject: [PATCH] [Cython] Fixed premature garbage collection of Reactor objects --- interfaces/cython/cantera/_cantera.pxd | 4 ++++ interfaces/cython/cantera/reactor.pyx | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/interfaces/cython/cantera/_cantera.pxd b/interfaces/cython/cantera/_cantera.pxd index 9f68a379b..baf03ae82 100644 --- a/interfaces/cython/cantera/_cantera.pxd +++ b/interfaces/cython/cantera/_cantera.pxd @@ -564,9 +564,13 @@ cdef class Wall: cdef WallSurface right_surface cdef object _velocity_func cdef object _heat_flux_func + cdef ReactorBase _left_reactor + cdef ReactorBase _right_reactor cdef str name cdef class FlowDevice: cdef CxxFlowDevice* dev cdef Func1 _rate_func cdef str name + cdef ReactorBase _upstream + cdef ReactorBase _downstream diff --git a/interfaces/cython/cantera/reactor.pyx b/interfaces/cython/cantera/reactor.pyx index bc7c77744..e4b57cf95 100644 --- a/interfaces/cython/cantera/reactor.pyx +++ b/interfaces/cython/cantera/reactor.pyx @@ -399,6 +399,9 @@ cdef class Wall: left._add_wall(self) right._add_wall(self) self.wall.install(deref(left.rbase), deref(right.rbase)) + # Keep references to prevent premature garbage collection + self._left_reactor = left + self._right_reactor = right property left: """ The left surface of this wall. """ @@ -532,6 +535,9 @@ cdef class FlowDevice: upstream._add_outlet(self) downstream._add_inlet(self) self.dev.install(deref(upstream.rbase), deref(downstream.rbase)) + # Keep references to prevent premature garbage collection + self._upstream = upstream + self._downstream = downstream def mdot(self, double t): """