From ffac010e5439b67a68f0a6d2b03a59909e201f5d Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 13 Mar 2025 22:03:45 +0300 Subject: [PATCH] update built-in error handling --- res/scripts/stdmin.lua | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/res/scripts/stdmin.lua b/res/scripts/stdmin.lua index 1e551118..d9be5cca 100644 --- a/res/scripts/stdmin.lua +++ b/res/scripts/stdmin.lua @@ -429,6 +429,18 @@ function file.readlines(path) return lines end +function debug.count_frames() + local frames = 1 + while true do + local info = debug.getinfo(frames) + if info then + frames = frames + 1 + else + return frames - 1 + end + end +end + function debug.get_traceback(start) local frames = {} local n = 2 + (start or 0) @@ -513,9 +525,13 @@ function __scripts_cleanup() end end -function __vc__error(msg, frame) +function __vc__error(msg, frame, n, lastn) if events then - events.emit("core:error", msg, debug.get_traceback(1)) + local frames = debug.get_traceback(1) + events.emit( + "core:error", msg, + table.sub(frames, 1 + (n or 0), lastn and #frames-lastn) + ) end return debug.traceback(msg, frame) end