From 6389708701f7120ffa60582a7b6a043c78f1f11c Mon Sep 17 00:00:00 2001 From: John Emhoff Date: Mon, 23 Feb 2015 15:03:50 +0000 Subject: [PATCH] Fix destructor order for _MessageReader --- capnp/lib/capnp.pyx | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/capnp/lib/capnp.pyx b/capnp/lib/capnp.pyx index 33f191a..47862c4 100644 --- a/capnp/lib/capnp.pyx +++ b/capnp/lib/capnp.pyx @@ -3229,8 +3229,7 @@ cdef class _MessageReader: """ cdef public object _parent cdef schema_cpp.MessageReader * thisptr - def __dealloc__(self): - del self.thisptr + def __init__(self): raise NotImplementedError("This is an abstract base class") @@ -3290,6 +3289,10 @@ cdef class _StreamFdMessageReader(_MessageReader): self.thisptr = new schema_cpp.StreamFdMessageReader(fd, opts) + def __dealloc__(self): + del self.thisptr + + cdef class _PackedMessageReader(_MessageReader): """Read a Cap'n Proto message from a file descriptor in a packed manner @@ -3318,6 +3321,10 @@ cdef class _PackedMessageReader(_MessageReader): self.thisptr = new schema_cpp.PackedMessageReader(stream, opts) return self + def __dealloc__(self): + del self.thisptr + + cdef class _PackedMessageReaderBytes(_MessageReader): cdef schema_cpp.ArrayInputStream * stream @@ -3340,6 +3347,7 @@ cdef class _PackedMessageReaderBytes(_MessageReader): self.thisptr = new schema_cpp.PackedMessageReader(deref(self.stream), opts) def __dealloc__(self): + del self.thisptr del self.stream cdef class _InputMessageReader(_MessageReader): @@ -3370,6 +3378,10 @@ cdef class _InputMessageReader(_MessageReader): self.thisptr = new schema_cpp.InputStreamMessageReader(stream, opts) return self + def __dealloc__(self): + del self.thisptr + + cdef class _PackedFdMessageReader(_MessageReader): """Read a Cap'n Proto message from a file descriptor in a packed manner @@ -3392,6 +3404,10 @@ cdef class _PackedFdMessageReader(_MessageReader): self.thisptr = new schema_cpp.PackedFdMessageReader(fd, opts) + def __dealloc__(self): + del self.thisptr + + cdef class _MultipleMessageReader: cdef schema_cpp.FdInputStream * stream cdef schema_cpp.BufferedInputStream * buffered_stream @@ -3574,6 +3590,10 @@ cdef class _FlatArrayMessageReader(_MessageReader): self.thisptr = new schema_cpp.FlatArrayMessageReader(schema_cpp.WordArrayPtr(ptr, sz//8)) + def __dealloc__(self): + del self.thisptr + + @cython.internal cdef class _FlatMessageBuilder(_MessageBuilder): cdef object _object_to_pin