patch 8.2.4309: Vim9: crash when using a partial in the wrong context
Problem: Vim9: crash when using a partial in the wrong context.
Solution: Don't use an NULL outer pointer. (closes #9706)
diff --git a/src/vim9execute.c b/src/vim9execute.c
index cac8c51..6c79ff7 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1694,7 +1694,7 @@
}
/*
- * Store a value in a list or dict variable.
+ * Store a value in a list, dict or blob variable.
* Returns OK, FAIL or NOTDONE (uncatchable error).
*/
static int
@@ -5081,12 +5081,16 @@
goto failed_early;
if (partial != NULL)
{
- if (partial->pt_outer.out_stack == NULL && current_ectx != NULL)
+ if (partial->pt_outer.out_stack == NULL)
{
- if (current_ectx->ec_outer_ref != NULL
- && current_ectx->ec_outer_ref->or_outer != NULL)
- ectx.ec_outer_ref->or_outer =
+ if (current_ectx != NULL)
+ {
+ if (current_ectx->ec_outer_ref != NULL
+ && current_ectx->ec_outer_ref->or_outer != NULL)
+ ectx.ec_outer_ref->or_outer =
current_ectx->ec_outer_ref->or_outer;
+ }
+ // Should there be an error here?
}
else
{