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;