From ab05d47d7c8882f5b3f8168a5a1d3aadc919f335 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Fri, 9 May 2014 14:25:23 +0100 Subject: [PATCH] elua: free format buffers immediately --- src/bin/elua/core/util.lua | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/bin/elua/core/util.lua b/src/bin/elua/core/util.lua index 0806733886..45267fcb26 100644 --- a/src/bin/elua/core/util.lua +++ b/src/bin/elua/core/util.lua @@ -204,6 +204,8 @@ local Str_Buf = ffi.metatype("Str_Buf", { free = function(self) C.free(self.buf) self.buf = nil + self.len = 0 + self.cap = 0 end, clear = function(self) self.len = 0 @@ -212,8 +214,8 @@ local Str_Buf = ffi.metatype("Str_Buf", { local oldcap = self.cap if oldcap >= newcap then return end local buf = C.malloc(newcap) - copy(buf, self.buf, self.len) - C.free(self.buf) + if self.len ~= 0 then copy(buf, self.buf, self.len) end + if self.buf ~= nil then C.free(self.buf) end self.buf = buf self.cap = newcap end, @@ -340,7 +342,10 @@ getmetatable("").__mod = function(fmts, params) end c, s = s[0], s + 1 end - return tostr(buf) + nbuf:free() + local ret = tostr(buf) + buf:free() + return ret end return M \ No newline at end of file