aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2025-07-27 19:01:43 +0300
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2025-07-27 19:01:43 +0300
commitdfa4394c1df45755de955260b1d7412c673a7ca0 (patch)
treed340fe60b2c0c71a295235347ca3179a09a5ef5d
parente94dce1f9770abde689314fb993a23800e2bcc9f (diff)
downloadsciteco-dfa4394c1df45755de955260b1d7412c673a7ca0.tar.gz
fixed using the command-line replacement register (ESC) in batch mode: was causing assertions when entering interactive mode
Also added a regression test case.
-rw-r--r--src/main.c3
-rw-r--r--tests/testsuite.at9
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])