Merge pull request #1264 from payonel/patch-1

Fix coroutine resume in piped programs by forcing write on close.
This commit is contained in:
Florian "Sangar" Nücke 2015-07-03 23:58:36 +02:00
commit 26a7939584

View File

@ -13,6 +13,9 @@ local unicode = require("unicode")
local memoryStream = {} local memoryStream = {}
function memoryStream:close() function memoryStream:close()
if (self.empty) then
self:write('')
end
self.closed = true self.closed = true
end end
@ -37,6 +40,7 @@ function memoryStream:read(n)
end end
function memoryStream:write(value) function memoryStream:write(value)
self.empty = false
if not self.redirect.write and self.closed then if not self.redirect.write and self.closed then
error("attempt to use a closed stream") error("attempt to use a closed stream")
end end
@ -59,7 +63,7 @@ end
function memoryStream.new() function memoryStream.new()
local stream = {closed = false, buffer = "", local stream = {closed = false, buffer = "",
redirect = {}, result = {}, args = {}} redirect = {}, result = {}, args = {}, empty = true}
local metatable = {__index = memoryStream, local metatable = {__index = memoryStream,
__gc = memoryStream.close, __gc = memoryStream.close,
__metatable = "memorystream"} __metatable = "memorystream"}