patch 8.1.1579: dict and list could be GC'ed while displaying error
Problem: Dict and list could be GC'ed while displaying error in a timer.
(Yasuhiro Matsumoto)
Solution: Block garbage collection when executing a timer. Add
test_garbagecollect_soon(). Add "no_wait_return" to
test_override(). (closes #4571)
diff --git a/src/dict.c b/src/dict.c
index ffcb100..96c58c1 100644
--- a/src/dict.c
+++ b/src/dict.c
@@ -28,7 +28,7 @@
{
dict_T *d;
- d = ALLOC_ONE(dict_T);
+ d = ALLOC_CLEAR_ONE(dict_T);
if (d != NULL)
{
/* Add the dict to the list of dicts for garbage collection. */
@@ -811,7 +811,7 @@
{
semsg(_("E723: Missing end of Dictionary '}': %s"), *arg);
failret:
- if (evaluate)
+ if (d != NULL)
dict_free(d);
return FAIL;
}