From: Willy Tarreau Date: Sun, 19 Jun 2022 15:35:53 +0000 (+0200) Subject: MINOR: hlua: don't dump empty entries in hlua_traceback() X-Git-Tag: v2.7-dev1~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5c143404ead89123c5ad75b2b23391d837569a94;p=thirdparty%2Fhaproxy.git MINOR: hlua: don't dump empty entries in hlua_traceback() Calling hlua_traceback() sometimes reports empty entries looking like: [C]: ? These ones correspond to certain internal C functions of the Lua library, but they do not provide any information and even complicate the interpretation of the dump. Better just skip them. --- diff --git a/src/hlua.c b/src/hlua.c index 33f054db57..0959be51cc 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -505,11 +505,6 @@ __LJMP const char *hlua_traceback(lua_State *L, const char* sep) struct buffer *msg = get_trash_chunk(); while (lua_getstack(L, level++, &ar)) { - - /* Add separator */ - if (b_data(msg)) - chunk_appendf(msg, "%s", sep); - /* Fill fields: * 'S': fills in the fields source, short_src, linedefined, lastlinedefined, and what; * 'l': fills in the field currentline; @@ -518,6 +513,14 @@ __LJMP const char *hlua_traceback(lua_State *L, const char* sep) */ lua_getinfo(L, "Slnt", &ar); + /* skip these empty entries, usually they come from deep C functions */ + if (ar.currentline < 0 && *ar.what == 'C' && !*ar.namewhat && !ar.name) + continue; + + /* Add separator */ + if (b_data(msg)) + chunk_appendf(msg, "%s", sep); + /* Append code localisation */ if (ar.currentline > 0) chunk_appendf(msg, "%s:%d: ", ar.short_src, ar.currentline);