comparison src/proto/eval.pro @ 29771:c71a42be2d7f v9.0.0225

patch 9.0.0225: using freed memory with multiple line breaks in expression Commit: https://github.com/vim/vim/commit/91c7cbfe31bbef57d5fcf7d76989fc159f73ef15 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Aug 18 13:28:31 2022 +0100 patch 9.0.0225: using freed memory with multiple line breaks in expression Problem: Using freed memory with multiple line breaks in expression. Solution: Free eval_tofree later.
author Bram Moolenaar <Bram@vim.org>
date Thu, 18 Aug 2022 14:30:05 +0200
parents 9a7a2908e1a8
children b3de17181c19
comparison
equal deleted inserted replaced
29770:653c04c1dcf1 29771:c71a42be2d7f
7 int eval_to_bool(char_u *arg, int *error, exarg_T *eap, int skip); 7 int eval_to_bool(char_u *arg, int *error, exarg_T *eap, int skip);
8 int eval_expr_valid_arg(typval_T *tv); 8 int eval_expr_valid_arg(typval_T *tv);
9 int eval_expr_typval(typval_T *expr, typval_T *argv, int argc, typval_T *rettv); 9 int eval_expr_typval(typval_T *expr, typval_T *argv, int argc, typval_T *rettv);
10 int eval_expr_to_bool(typval_T *expr, int *error); 10 int eval_expr_to_bool(typval_T *expr, int *error);
11 char_u *eval_to_string_skip(char_u *arg, exarg_T *eap, int skip); 11 char_u *eval_to_string_skip(char_u *arg, exarg_T *eap, int skip);
12 void init_evalarg(evalarg_T *evalarg);
13 void clear_evalarg(evalarg_T *evalarg, exarg_T *eap);
12 int skip_expr(char_u **pp, evalarg_T *evalarg); 14 int skip_expr(char_u **pp, evalarg_T *evalarg);
13 int skip_expr_concatenate(char_u **arg, char_u **start, char_u **end, evalarg_T *evalarg); 15 int skip_expr_concatenate(char_u **arg, char_u **start, char_u **end, evalarg_T *evalarg);
14 char_u *typval2string(typval_T *tv, int convert); 16 char_u *typval2string(typval_T *tv, int convert);
15 char_u *eval_to_string_eap(char_u *arg, int convert, exarg_T *eap); 17 char_u *eval_to_string_eap(char_u *arg, int convert, exarg_T *eap);
16 char_u *eval_to_string(char_u *arg, int convert); 18 char_u *eval_to_string(char_u *arg, int convert);
32 void set_context_for_expression(expand_T *xp, char_u *arg, cmdidx_T cmdidx); 34 void set_context_for_expression(expand_T *xp, char_u *arg, cmdidx_T cmdidx);
33 int pattern_match(char_u *pat, char_u *text, int ic); 35 int pattern_match(char_u *pat, char_u *text, int ic);
34 char_u *eval_next_non_blank(char_u *arg, evalarg_T *evalarg, int *getnext); 36 char_u *eval_next_non_blank(char_u *arg, evalarg_T *evalarg, int *getnext);
35 char_u *eval_next_line(char_u *arg, evalarg_T *evalarg); 37 char_u *eval_next_line(char_u *arg, evalarg_T *evalarg);
36 char_u *skipwhite_and_linebreak(char_u *arg, evalarg_T *evalarg); 38 char_u *skipwhite_and_linebreak(char_u *arg, evalarg_T *evalarg);
37 void init_evalarg(evalarg_T *evalarg);
38 void clear_evalarg(evalarg_T *evalarg, exarg_T *eap);
39 int eval0(char_u *arg, typval_T *rettv, exarg_T *eap, evalarg_T *evalarg); 39 int eval0(char_u *arg, typval_T *rettv, exarg_T *eap, evalarg_T *evalarg);
40 int eval0_retarg(char_u *arg, typval_T *rettv, exarg_T *eap, evalarg_T *evalarg, char_u **retarg); 40 int eval0_retarg(char_u *arg, typval_T *rettv, exarg_T *eap, evalarg_T *evalarg, char_u **retarg);
41 int eval1(char_u **arg, typval_T *rettv, evalarg_T *evalarg); 41 int eval1(char_u **arg, typval_T *rettv, evalarg_T *evalarg);
42 void eval_addblob(typval_T *tv1, typval_T *tv2); 42 void eval_addblob(typval_T *tv1, typval_T *tv2);
43 int eval_addlist(typval_T *tv1, typval_T *tv2); 43 int eval_addlist(typval_T *tv1, typval_T *tv2);