0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 9.0.1095: using freed memory when declaration fails

Problem:    Using freed memory when declaration fails. (Yegappan Lakshmanan)
Solution:   After unreferencing an object set the reference to NULL.
This commit is contained in:
Bram Moolenaar 2022-12-25 19:31:36 +00:00
parent 9b99411b93
commit 6ef5471afa
3 changed files with 20 additions and 0 deletions

View File

@ -349,6 +349,22 @@ def Test_class_object_member_access()
assert_equal('make = 123', c2.GetMake())
END
v9.CheckScriptSuccess(lines)
lines =<< trim END
vim9script
class MyCar
this.make: string
def new(make_arg: string)
this.make = make_arg
enddef
endclass
var c = MyCar.new("abc")
var c = MyCar.new("def")
END
v9.CheckScriptFailure(lines, 'E1041:')
enddef
def Test_class_member_access()

View File

@ -162,9 +162,11 @@ clear_tv(typval_T *varp)
break;
case VAR_CLASS:
class_unref(varp->vval.v_class);
varp->vval.v_class = NULL;
break;
case VAR_OBJECT:
object_unref(varp->vval.v_object);
varp->vval.v_object = NULL;
break;
case VAR_UNKNOWN:
case VAR_ANY:

View File

@ -695,6 +695,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1095,
/**/
1094,
/**/