summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Horel <guillaume.horel@gmail.com>2018-10-29 16:11:20 -0400
committerGuillaume Horel <guillaume.horel@gmail.com>2018-10-29 16:11:20 -0400
commit33f21fbd10c9036063b812839fbc97ca1603dff4 (patch)
tree73a6c283e73af4797a54473db97b4ab3e7eaf0cd
parent4c4223ff594a4f19a2942da182b1bdeecd835915 (diff)
downloadpyisda-33f21fbd10c9036063b812839fbc97ca1603dff4.tar.gz
fix memory leak
-rw-r--r--pyisda/curve.pyx12
1 files 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 = <unsigned char*>malloc(curve_size * sizeof(unsigned char))
serialize(curve, buf)
- return <bytes>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 <bytes>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 <bytes>buf[:buf_size]
+ cdef bytes r = buf[:buf_size]
+ free(buf)
+ return r
def __setstate__(self, bytes state):
cdef: