diff options
| -rw-r--r-- | pyisda/curve.pyx | 12 |
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: |
