diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2017-02-27 10:29:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-27 10:29:46 +0100 |
commit | c318d8e672a3b1dfe4ba7954dbca61c509c2b99c (patch) | |
tree | 282a6090dbf2d9017a3ad0a7382df08b2d320a05 /src/nvim/memory.c | |
parent | 8c8ce1832e780f87b2922ba3acf0d44f78c50931 (diff) | |
parent | a85021068de95ef7c69b3b93b31bc32fbb154ed3 (diff) | |
download | rneovim-c318d8e672a3b1dfe4ba7954dbca61c509c2b99c.tar.gz rneovim-c318d8e672a3b1dfe4ba7954dbca61c509c2b99c.tar.bz2 rneovim-c318d8e672a3b1dfe4ba7954dbca61c509c2b99c.zip |
Merge #6112 from ZyX-I/split-eval'/buf_get_changedtick
Better b:changedtick support
Diffstat (limited to 'src/nvim/memory.c')
-rw-r--r-- | src/nvim/memory.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/nvim/memory.c b/src/nvim/memory.c index 51e0dd926e..b593936d7b 100644 --- a/src/nvim/memory.c +++ b/src/nvim/memory.c @@ -625,18 +625,6 @@ void free_all_mem(void) /* Destroy all windows. Must come before freeing buffers. */ win_free_all(); - /* Free all buffers. Reset 'autochdir' to avoid accessing things that - * were freed already. */ - p_acd = false; - for (buf = firstbuf; buf != NULL; ) { - bufref_T bufref; - set_bufref(&bufref, buf); - nextbuf = buf->b_next; - close_buffer(NULL, buf, DOBUF_WIPE, false); - // Didn't work, try next one. - buf = bufref_valid(&bufref) ? nextbuf : firstbuf; - } - free_cmdline_buf(); /* Clear registers. */ @@ -660,6 +648,20 @@ void free_all_mem(void) eval_clear(); + // Free all buffers. Reset 'autochdir' to avoid accessing things that + // were freed already. + // Must be after eval_clear to avoid it trying to access b:changedtick after + // freeing it. + p_acd = false; + for (buf = firstbuf; buf != NULL; ) { + bufref_T bufref; + set_bufref(&bufref, buf); + nextbuf = buf->b_next; + close_buffer(NULL, buf, DOBUF_WIPE, false); + // Didn't work, try next one. + buf = bufref_valid(&bufref) ? nextbuf : firstbuf; + } + /* screenlines (can't display anything now!) */ free_screenlines(); |