From dfa4394c1df45755de955260b1d7412c673a7ca0 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Sun, 27 Jul 2025 19:01:43 +0300 Subject: fixed using the command-line replacement register (ESC) in batch mode: was causing assertions when entering interactive mode Also added a regression test case. --- src/main.c | 3 +-- tests/testsuite.at | 9 +++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 1cedb9d..c8ac27b 100644 --- a/src/main.c +++ b/src/main.c @@ -518,8 +518,7 @@ main(int argc, char **argv) * If munged file didn't quit, switch into interactive mode */ /* commandline replacement string register */ - teco_qreg_table_insert_unique(&teco_qreg_table_globals, - teco_qreg_plain_new("\e", 1)); + teco_qreg_table_replace(&teco_qreg_table_globals, teco_qreg_plain_new("\e", 1)); teco_undo_enabled = TRUE; teco_ring_set_scintilla_undo(TRUE); diff --git a/tests/testsuite.at b/tests/testsuite.at index 132684b..b8a7404 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -536,6 +536,15 @@ TE_CHECK_CMDLINE([[@^Um{:@S/XXX/} :Mm"S(0/0)' Mm"S(0/0)']], 0, ignore, stderr) AT_FAIL_IF([$GREP "^Error:" stderr]) AT_CLEANUP +AT_SETUP([Overwriting builtin registers]) +# Initializes registers in batch mode, which are later replaced during startup +# of interactive mode. +# This was causing assertion errors. +AT_DATA([test.tec], [[23U^[ !]! 23U~ +]]) +AT_CHECK([[$SCITECO --fake-cmdline '' --mung test.tec]], 0, ignore, ignore) +AT_CLEANUP + AT_BANNER([Known Bugs]) AT_SETUP([Number stack]) -- cgit v1.2.3