From ff2d1376a1456d5c06e208eedd9dbc65e71e81b4 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Wed, 30 Oct 2024 13:54:28 +0300 Subject: fixed invalid memory access when executing the F< command (but only when jumping to the beginning of the macro) * I am not sure whether this feature is really that useful... * teco_machine_main_t::macro_pc is now pointing to the __next__ character to execute, therefore it's easier to manipulate by flow control commands. Also, it can now be unsigned (gsize) like all other program counters. * Detected thanks to running the testsuite under Valgrind. --- src/parser.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/parser.c') diff --git a/src/parser.c b/src/parser.c index b1aa06e..5d97e9d 100644 --- a/src/parser.c +++ b/src/parser.c @@ -122,10 +122,10 @@ teco_machine_main_step(teco_machine_main_t *ctx, const gchar *macro, gsize stop_ ctx->macro_pc, chr, chr, ctx->parent.current, ctx->mode); #endif + ctx->macro_pc = g_utf8_next_char(macro+ctx->macro_pc) - macro; + if (!teco_machine_input(&ctx->parent, chr, error)) goto error_attach; - - ctx->macro_pc = g_utf8_next_char(macro+ctx->macro_pc) - macro; } /* @@ -149,7 +149,7 @@ error_attach: * FIXME: Maybe this can be avoided altogether by passing in ctx->macro_pc * from the callees? */ - teco_error_set_coord(macro, ctx->macro_pc); + teco_error_set_coord(macro, ctx->macro_pc-1); return FALSE; } -- cgit v1.2.3