From 33f21fbd10c9036063b812839fbc97ca1603dff4 Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Mon, 29 Oct 2018 16:11:20 -0400 Subject: fix memory leak --- pyisda/curve.pyx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pyisda/curve.pyx b/pyisda/curve.pyx index 98c6044..074aa8c 100644 --- a/pyisda/curve.pyx +++ b/pyisda/curve.pyx @@ -64,7 +64,9 @@ cdef class Curve(object): size_t curve_size = TCurve_size(curve.fNumItems) unsigned char* buf = malloc(curve_size * sizeof(unsigned char)) serialize(curve, buf) - return buf[:curve_size] + cdef bytes r = buf[:curve_size] + free(buf) + return r def __setstate__(self, bytes state): cdef: @@ -319,7 +321,9 @@ cdef class YieldCurve(Curve): unsigned char* cursor = buf + size serialize(curve, buf) serialize_vector(self.dates, cursor) - return buf[:buf_size] + cdef bytes r = buf[:buf_size] + free(buf) + return r def __setstate__(self, bytes state): cdef: @@ -601,7 +605,9 @@ cdef class SpreadCurve(Curve): memcpy(cursor, self.recovery_rates.get(), size_recovery) cursor += size_recovery memcpy(cursor, &self.defaulted, sizeof(TDate)) - return buf[:buf_size] + cdef bytes r = buf[:buf_size] + free(buf) + return r def __setstate__(self, bytes state): cdef: -- cgit v1.2.3-70-g09d2