Mercurial > vim
comparison src/vim9execute.c @ 24325:52a0e187264b v8.2.2703
patch 8.2.2703: Vim9: memory leak when failing on locked variable
Commit: https://github.com/vim/vim/commit/6e50ec2f0af85940e40ed3f897bfcfa445adbb0e
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Apr 3 19:32:44 2021 +0200
patch 8.2.2703: Vim9: memory leak when failing on locked variable
Problem: Vim9: memory leak when failing on locked variable.
Solution: Free the memory.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 03 Apr 2021 19:45:03 +0200 |
parents | c88d0b5c5a42 |
children | 236e9ebdb30e |
comparison
equal
deleted
inserted
replaced
24324:95ee4d33e491 | 24325:52a0e187264b |
---|---|
1942 store_var(name, STACK_TV_BOT(0)); | 1942 store_var(name, STACK_TV_BOT(0)); |
1943 else | 1943 else |
1944 { | 1944 { |
1945 SOURCING_LNUM = iptr->isn_lnum; | 1945 SOURCING_LNUM = iptr->isn_lnum; |
1946 if (var_check_permission(di, name) == FAIL) | 1946 if (var_check_permission(di, name) == FAIL) |
1947 { | |
1948 clear_tv(STACK_TV_BOT(0)); | |
1947 goto on_error; | 1949 goto on_error; |
1950 } | |
1948 clear_tv(&di->di_tv); | 1951 clear_tv(&di->di_tv); |
1949 di->di_tv = *STACK_TV_BOT(0); | 1952 di->di_tv = *STACK_TV_BOT(0); |
1950 } | 1953 } |
1951 } | 1954 } |
1952 break; | 1955 break; |
1964 | 1967 |
1965 // "const" and "final" are checked at compile time, locking | 1968 // "const" and "final" are checked at compile time, locking |
1966 // the value needs to be checked here. | 1969 // the value needs to be checked here. |
1967 SOURCING_LNUM = iptr->isn_lnum; | 1970 SOURCING_LNUM = iptr->isn_lnum; |
1968 if (value_check_lock(sv->sv_tv->v_lock, sv->sv_name, FALSE)) | 1971 if (value_check_lock(sv->sv_tv->v_lock, sv->sv_name, FALSE)) |
1972 { | |
1973 clear_tv(STACK_TV_BOT(0)); | |
1969 goto on_error; | 1974 goto on_error; |
1975 } | |
1970 | 1976 |
1971 clear_tv(sv->sv_tv); | 1977 clear_tv(sv->sv_tv); |
1972 *sv->sv_tv = *STACK_TV_BOT(0); | 1978 *sv->sv_tv = *STACK_TV_BOT(0); |
1973 } | 1979 } |
1974 break; | 1980 break; |