patch 8.2.5079: DirChanged autocommand may use freed memory

Problem:    DirChanged autocommand may use freed memory. (Shane-XB Qian)
Solution:   Free the memory later. (closes #10555)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 634a1bc..9a06999 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7525,6 +7525,7 @@
     int		dir_differs;
     char_u	*acmd_fname = NULL;
     char_u	**pp;
+    char_u	*tofree;
 
     if (new_dir == NULL || allbuf_locked())
 	return FALSE;
@@ -7601,13 +7602,14 @@
 	pp = &curtab->tp_prevdir;
     else
 	pp = &prev_dir;
-    vim_free(*pp);
+    tofree = *pp;  // new_dir may use this
     *pp = pdir;
 
     post_chdir(scope);
 
     if (dir_differs)
 	apply_autocmds(EVENT_DIRCHANGED, acmd_fname, new_dir, FALSE, curbuf);
+    vim_free(tofree);
     return TRUE;
 }