Mercurial > vim
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); |