0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

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)
This commit is contained in:
Bram Moolenaar
2021-12-14 18:14:37 +00:00
parent 919c12c19a
commit 7509ad8b0f
6 changed files with 100 additions and 12 deletions

View File

@@ -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 {