diff --git a/leopard/leopard.nim b/leopard/leopard.nim index d236c56..ae9c8b8 100644 --- a/leopard/leopard.nim +++ b/leopard/leopard.nim @@ -105,6 +105,8 @@ func decode*( for i in 0.. 0: for i, p in self.workBufferPtr: - p.leoFree() - self.workBufferPtr[i] = nil + if not isNil(p): + p.leoFree() + self.workBufferPtr[i] = nil self.workBufferPtr.setLen(0) if self.dataBufferPtr.len > 0: for i, p in self.dataBufferPtr: - p.leoFree() - self.dataBufferPtr[i] = nil + if not isNil(p): + p.leoFree() + self.dataBufferPtr[i] = nil self.dataBufferPtr.setLen(0) if self.kind == LeoCoderKind.Decoder: if self.decodeBufferPtr.len > 0: for i, p in self.decodeBufferPtr: - p.leoFree() - self.decodeBufferPtr[i] = nil + if not isNil(p): + p.leoFree() + self.decodeBufferPtr[i] = nil self.decodeBufferPtr.setLen(0) # TODO: The destructor doesn't behave as diff --git a/tests/testleopard.nim b/tests/testleopard.nim index 79d9f9f..8795e93 100644 --- a/tests/testleopard.nim +++ b/tests/testleopard.nim @@ -43,4 +43,4 @@ suite "Leopard": check recovered[1] == data2 finally: encoder.free() - decoder.free() \ No newline at end of file + decoder.free()