summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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: