Mercurial > vim
diff src/structs.h @ 26560:454a1c9ef797 v8.2.3809
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Commit: https://github.com/vim/vim/commit/7509ad8b0fad56f88288977decbeca3640406c82
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Dec 14 18:14:37 2021 +0000
patch 8.2.3809: Vim9: crash when garbage collecting a nested partial
Problem: Vim9: crash when garbage collecting a nested partial. (Virginia
Senioria)
Solution: Set references in all the funcstacks. (closes #9348)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 14 Dec 2021 19:15:04 +0100 |
parents | 28745eec1dda |
children | 2126feddeda6 |
line wrap: on
line diff
--- a/src/structs.h +++ b/src/structs.h @@ -2009,8 +2009,13 @@ typedef struct { * Structure to hold the context of a compiled function, used by closures * defined in that function. */ -typedef struct funcstack_S +typedef struct funcstack_S funcstack_T; + +struct funcstack_S { + funcstack_T *fs_next; // linked list at "first_funcstack" + funcstack_T *fs_prev; + garray_T fs_ga; // contains the stack, with: // - arguments // - frame @@ -2021,7 +2026,7 @@ typedef struct funcstack_S int fs_refcount; // nr of closures referencing this funcstack int fs_min_refcount; // nr of closures on this funcstack int fs_copyID; // for garray_T collection -} funcstack_T; +}; typedef struct outer_S outer_T; struct outer_S {