Skip to content

Commit 98aeb21

Browse files
committed
patch 9.0.1037: lalloc(0) error for a class without members
Problem: lalloc(0) error for a class without members. Solution: Don't allocate room for members if there aren't any. Don't create the class if there was an error.
1 parent 3f8f827 commit 98aeb21

2 files changed

Lines changed: 7 additions & 4 deletions

File tree

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,8 @@ static char *(features[]) =
695695

696696
static int included_patches[] =
697697
{ /* Add new patch number below this line */
698+
/**/
699+
1037,
698700
/**/
699701
1036,
700702
/**/

src/vim9class.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ ex_class(exarg_T *eap)
121121
semsg(_(e_command_cannot_be_shortened_str), line);
122122
else if (*p == '|' || !ends_excmd2(line, p))
123123
semsg(_(e_trailing_characters_str), p);
124-
125-
success = TRUE;
124+
else
125+
success = TRUE;
126126
break;
127127
}
128128

@@ -190,9 +190,10 @@ ex_class(exarg_T *eap)
190190

191191
// Members are used by the new() function, add them here.
192192
cl->class_obj_member_count = objmembers.ga_len;
193-
cl->class_obj_members = ALLOC_MULT(objmember_T, objmembers.ga_len);
193+
cl->class_obj_members = objmembers.ga_len == 0 ? NULL
194+
: ALLOC_MULT(objmember_T, objmembers.ga_len);
194195
if (cl->class_name == NULL
195-
|| cl->class_obj_members == NULL)
196+
|| (objmembers.ga_len > 0 && cl->class_obj_members == NULL))
196197
{
197198
vim_free(cl->class_name);
198199
vim_free(cl->class_obj_members);

0 commit comments

Comments
 (0)