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;
     }