diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-06-12 11:49:16 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-06-12 11:49:16 +0100 |
commit | d8c9d32c8932e93008bfd4e8828ed42f4e9f8315 (patch) | |
tree | b70a3c3bc8e95ff3e27696e02675baf2301e17f4 /src/ex_docmd.c | |
parent | 3269efdf014dd3b6e60e330950d40a7cc5d13d3a (diff) |
patch 8.2.5079: DirChanged autocommand may use freed memoryv8.2.5079
Problem: DirChanged autocommand may use freed memory. (Shane-XB Qian)
Solution: Free the memory later. (closes #10555)
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r-- | src/ex_docmd.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 634a1bcef5..9a06999e7c 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -7525,6 +7525,7 @@ changedir_func( 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 @@ changedir_func( 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; } |