diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2018-10-29 16:11:20 -0400 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2018-10-29 16:11:20 -0400 |
| commit | 33f21fbd10c9036063b812839fbc97ca1603dff4 (patch) | |
| tree | 73a6c283e73af4797a54473db97b4ab3e7eaf0cd | |
| parent | 4c4223ff594a4f19a2942da182b1bdeecd835915 (diff) | |
| download | pyisda-33f21fbd10c9036063b812839fbc97ca1603dff4.tar.gz | |
fix memory leak
| -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: |
