aboutsummaryrefslogtreecommitdiff
path: root/src/stdlib/stacktrace.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2025-05-02 18:25:56 -0400
committerBruce Hill <bruce@bruce-hill.com>2025-05-02 18:25:56 -0400
commitad9ac26155ab199c082a675811ece734fe70bce3 (patch)
treec5226adf171825de9eff089f1ff5572ad23933da /src/stdlib/stacktrace.c
parent26f0982c830083bc5a70a0adcdfd80bfb5b7698c (diff)
Bugfix for stack traces
Diffstat (limited to 'src/stdlib/stacktrace.c')
-rw-r--r--src/stdlib/stacktrace.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/stdlib/stacktrace.c b/src/stdlib/stacktrace.c
index d460ba58..b3ad04bb 100644
--- a/src/stdlib/stacktrace.c
+++ b/src/stdlib/stacktrace.c
@@ -81,15 +81,12 @@ static void _print_stack_frame(FILE *out, const char *cwd, const char *install_d
filename += strlen(cwd);
fprint_inline(out, USE_COLOR ? "\033[1mIn \033[33m" : "In ", function_display, USE_COLOR ? "()\033[37m" : "()");
- if (filename) {
- if (install_dir[0] && strncmp(filename, install_dir, strlen(install_dir)) == 0)
- fprint_inline(out, USE_COLOR ? " in library \033[35m" : " in library ", filename, ":", lineno);
- else
- fprint(out, USE_COLOR ? " in \033[35m" : " in ", filename, ":", lineno);
- }
+ if (install_dir[0] && strncmp(filename, install_dir, strlen(install_dir)) == 0)
+ fprint_inline(out, USE_COLOR ? " in library \033[35m" : " in library ", filename, ":", lineno);
+ else
+ fprint(out, USE_COLOR ? " in \033[35m" : " in ", filename, ":", lineno);
fprint(out, USE_COLOR ? "\033[m" : "");
- if (filename)
- fprint_context(out, filename, lineno, 3, 1);
+ fprint_context(out, filename, lineno, 3, 1);
} else {
fprint(out, "LINE: ", function);
}
@@ -124,7 +121,7 @@ public void print_stacktrace(FILE *out, int offset)
const char *function = NULL, *filename = NULL;
long line_num = 0;
if (fparse(fp, &function, "\n", &filename, ":", &line_num) == NULL) {
- if (ends_with(function, "$main"))
+ if (starts_with(function, "main$"))
main_func_onwards = true;
if (main_func_onwards)
_print_stack_frame(out, cwd, install_dir, function, filename, line_num);