Skip to content

Commit

Permalink
chore: update time callback error non-strings
Browse files Browse the repository at this point in the history
  • Loading branch information
zhaozg committed Aug 19, 2023
1 parent e3c93a6 commit cfc2621
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
6 changes: 4 additions & 2 deletions src/luv.c
Original file line number Diff line number Diff line change
Expand Up @@ -706,7 +706,8 @@ LUALIB_API int luv_cfpcall(lua_State* L, int nargs, int nresult, int flags) {
break;
case LUA_ERRMEM:
if ((flags & LUVF_CALLBACK_NOERRMSG) == 0)
fprintf(stderr, "System Error: %s\n", lua_tostring(L, -1));
fprintf(stderr, "System Error: %s\n",
luaL_tolstring(L, lua_absindex(L, -1), NULL));
if ((flags & LUVF_CALLBACK_NOEXIT) == 0)
exit(-1);
lua_pop(L, 1);
Expand All @@ -716,7 +717,8 @@ LUALIB_API int luv_cfpcall(lua_State* L, int nargs, int nresult, int flags) {
case LUA_ERRERR:
default:
if ((flags & LUVF_CALLBACK_NOERRMSG) == 0)
fprintf(stderr, "Uncaught Error: %s\n", lua_tostring(L, -1));
fprintf(stderr, "Uncaught Error: %s\n",
luaL_tolstring(L, lua_absindex(L, -1), NULL));
if ((flags & LUVF_CALLBACK_NOEXIT) == 0)
exit(-1);
lua_pop(L, 1);
Expand Down
18 changes: 16 additions & 2 deletions tests/test-timer.lua
Original file line number Diff line number Diff line change
Expand Up @@ -115,12 +115,26 @@ return require('lib/tap')(function (test)
assert(huge_timer:get_due_in()==0xffff)
end, "1.40.0")

test("timer init", function(print, p, expect, uv)
test("timer callback with errors", function(print, p, expect, uv)
local Error = {}
Error.__index = Error

function Error.new(msg)
local o = setmetatable({}, Error)
o.msg = assert(msg)
return o
end

function Error:__tostring()
return assert(tostring(self.msg))
end

local timer = uv.new_timer()
timer:start(10, 0, function()
timer:stop()
timer:close()
error('Error in timeout callback')
local e = Error.new('Error in timeout callback')
error(e)
end)
end)
end)

0 comments on commit cfc2621

Please sign in to comment.