comparison src/userfunc.c @ 23320:1d11e3adbe52 v8.2.2205

patch 8.2.2205: Vim9: memory leak when parsing lambda fails Commit: https://github.com/vim/vim/commit/6dd41b1d575e8859238144899600e3cbb412c79b Author: Bram Moolenaar <Bram@vim.org> Date: Thu Dec 24 16:06:00 2020 +0100 patch 8.2.2205: Vim9: memory leak when parsing lambda fails Problem: Vim9: memory leak when parsing lambda fails. Solution: Clear growarrays.
author Bram Moolenaar <Bram@vim.org>
date Thu, 24 Dec 2020 16:15:03 +0100
parents c76240efdf02
children cdb706d5c43d
comparison
equal deleted inserted replaced
23319:2e18dcd91c7b 23320:1d11e3adbe52
521 s = skipwhite(*arg + 1); 521 s = skipwhite(*arg + 1);
522 ret = get_function_args(&s, equal_arrow ? ')' : '-', NULL, 522 ret = get_function_args(&s, equal_arrow ? ')' : '-', NULL,
523 types_optional ? &argtypes : NULL, types_optional, 523 types_optional ? &argtypes : NULL, types_optional,
524 NULL, NULL, TRUE, NULL, NULL); 524 NULL, NULL, TRUE, NULL, NULL);
525 if (ret == FAIL || skip_arrow(s, equal_arrow) == NULL) 525 if (ret == FAIL || skip_arrow(s, equal_arrow) == NULL)
526 {
527 if (types_optional)
528 ga_clear_strings(&argtypes);
526 return NOTDONE; 529 return NOTDONE;
530 }
527 531
528 // Parse the arguments again. 532 // Parse the arguments again.
529 if (evaluate) 533 if (evaluate)
530 pnewargs = &newargs; 534 pnewargs = &newargs;
531 else 535 else
533 *arg = skipwhite(*arg + 1); 537 *arg = skipwhite(*arg + 1);
534 ret = get_function_args(arg, equal_arrow ? ')' : '-', pnewargs, 538 ret = get_function_args(arg, equal_arrow ? ')' : '-', pnewargs,
535 types_optional ? &argtypes : NULL, types_optional, 539 types_optional ? &argtypes : NULL, types_optional,
536 &varargs, NULL, FALSE, NULL, NULL); 540 &varargs, NULL, FALSE, NULL, NULL);
537 if (ret == FAIL || (*arg = skip_arrow(*arg, equal_arrow)) == NULL) 541 if (ret == FAIL || (*arg = skip_arrow(*arg, equal_arrow)) == NULL)
542 {
543 if (types_optional)
544 ga_clear_strings(&argtypes);
538 return NOTDONE; 545 return NOTDONE;
546 }
539 547
540 // Set up a flag for checking local variables and arguments. 548 // Set up a flag for checking local variables and arguments.
541 if (evaluate) 549 if (evaluate)
542 eval_lavars_used = &eval_lavars; 550 eval_lavars_used = &eval_lavars;
543 551