Problem: Crash when calling method on super in child constructor. (Israel
Chauca Fuentes)
Solution: Clear the type list. (Ernie Rael, closes #12489, closes #12471)
END
v9.CheckScriptSuccess(lines)
unlet g:result
+
+ # Using super, Child invokes Base method which has optional arg. #12471
+ lines =<< trim END
+ vim9script
+
+ class Base
+ this.success: bool = false
+ def Method(arg = 0)
+ this.success = true
+ enddef
+ endclass
+
+ class Child extends Base
+ def new()
+ super.Method()
+ enddef
+ endclass
+
+ var obj = Child.new()
+ assert_equal(true, obj.success)
+ END
+ v9.CheckScriptSuccess(lines)
enddef
// type_T **uf_arg_types;
// type_T *uf_ret_type;
- ufunc->uf_type_list.ga_len = 0;
- ufunc->uf_type_list.ga_data = NULL;
+ // make uf_type_list empty
+ ga_init(&ufunc->uf_type_list);
// TODO: partial_T *uf_partial;
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1605,
/**/
1604,
/**/
if (*fup == NULL)
goto cleanup;
- mch_memmove(*fup, gap->ga_data, sizeof(ufunc_T *) * gap->ga_len);
+ if (gap->ga_len != 0)
+ mch_memmove(*fup, gap->ga_data,
+ sizeof(ufunc_T *) * gap->ga_len);
vim_free(gap->ga_data);
if (loop == 1)
cl->class_class_function_count_child = gap->ga_len;