aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/qreg-commands.c
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2025-03-21 13:26:01 +0300
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2025-03-21 13:40:52 +0300
commit33f71654136014bac094babaaa81d91245fdd24c (patch)
tree2090722fc330ded11fb00321a8afd7e0e81bafaa /src/qreg-commands.c
parent121cca61bedf24ba428e019f23b3bbb7160ce162 (diff)
downloadsciteco-33f71654136014bac094babaaa81d91245fdd24c.tar.gz
fixed rubout of Q-Register specifications
* This was a regression introduced by 257a0bf128e109442dce91c4aaa1d97fed17ad1a. * The undo token that frees newly allocated teco_machine_qregspec_t must actually reset the pointer as well since any subsequent token, pushed by teco_undo_qregspec_own(), will expect a valid pointer. * Could have been done via ctx->expectqreg = NULL; teco_undo_qregspec_own(ctx->expectqreg); but using a special clear function requires less memory and is easier to understand. * Added test case. This wouldn't always crash, but should definitely show up in Valgrind.
Diffstat (limited to 'src/qreg-commands.c')
-rw-r--r--src/qreg-commands.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/qreg-commands.c b/src/qreg-commands.c
index ebf6caa..3da9c46 100644
--- a/src/qreg-commands.c
+++ b/src/qreg-commands.c
@@ -45,7 +45,7 @@ teco_state_expectqreg_initial(teco_machine_main_t *ctx, GError **error)
ctx->expectqreg = teco_machine_qregspec_new(current->expectqreg.type, ctx->qreg_table_locals,
ctx->parent.must_undo);
if (ctx->parent.must_undo)
- undo__teco_machine_qregspec_free(ctx->expectqreg);
+ undo__teco_machine_qregspec_clear(&ctx->expectqreg);
return TRUE;
}
@@ -240,7 +240,7 @@ teco_state_queryqreg_initial(teco_machine_main_t *ctx, GError **error)
ctx->expectqreg = teco_machine_qregspec_new(type, ctx->qreg_table_locals,
ctx->parent.must_undo);
if (ctx->parent.must_undo)
- undo__teco_machine_qregspec_free(ctx->expectqreg);
+ undo__teco_machine_qregspec_clear(&ctx->expectqreg);
return TRUE;
}