libs/core: restore original implementation of copcall() and coxpcall(), solves issues with RPC UCI endpoint

This commit is contained in:
Jo-Philipp Wich 2010-11-09 19:43:13 +00:00
parent 639664a40e
commit 472ffe69a9

View file

@ -787,19 +787,19 @@ function copcall(f, ...)
end end
-- Handle return value of protected call -- Handle return value of protected call
function handleReturnValue(err, co, status, arg1, arg2, arg3, arg4, arg5) function handleReturnValue(err, co, status, ...)
if not status then if not status then
return false, err(debug.traceback(co, arg1), arg1, arg2, arg3, arg4, arg5) return false, err(debug.traceback(co, (...)), ...)
end end
if coroutine.status(co) ~= 'suspended' then if coroutine.status(co) ~= 'suspended' then
return true, arg1, arg2, arg3, arg4, arg5 return true, ...
end end
return performResume(err, co, coroutine.yield(arg1, arg2, arg3, arg4, arg5)) return performResume(err, co, coroutine.yield(...))
end end
-- Resume execution of protected function call -- Resume execution of protected function call
function performResume(err, co, arg1, arg2, arg3, arg4, arg5) function performResume(err, co, ...)
return handleReturnValue(err, co, coroutine.resume(co, arg1, arg2, arg3, arg4, arg5)) return handleReturnValue(err, co, coroutine.resume(co, ...))
end end