# HG changeset patch # User Bram Moolenaar # Date 1576512904 -3600 # Node ID 2bdc2e1f6e1f939118a552ac39e37178c9d35ebf # Parent 1974a221b4947ffabbee02199f78628562a5e0a8 patch 8.2.0013: not using a typedef for condstack Commit: https://github.com/vim/vim/commit/ddef129160ff0676e5da482071fb2fdc2988ac34 Author: Bram Moolenaar Date: Mon Dec 16 17:10:33 2019 +0100 patch 8.2.0013: not using a typedef for condstack Problem: Not using a typedef for condstack. Solution: Add a typedef. diff --git a/src/ex_cmds.h b/src/ex_cmds.h --- a/src/ex_cmds.h +++ b/src/ex_cmds.h @@ -1841,7 +1841,7 @@ struct exarg char_u *(*getline)(int, void *, int, int); void *cookie; // argument for getline() #ifdef FEAT_EVAL - struct condstack *cstack; // condition stack for ":if" etc. + cstack_T *cstack; // condition stack for ":if" etc. #endif long verbose_save; // saved value of p_verbose int save_msg_silent; // saved value of msg_silent diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -20,7 +20,7 @@ static int ex_pressedreturn = FALSE; #endif #ifdef FEAT_EVAL -static char_u *do_one_cmd(char_u **, int, struct condstack *, char_u *(*fgetline)(int, void *, int, int), void *cookie); +static char_u *do_one_cmd(char_u **, int, cstack_T *, char_u *(*fgetline)(int, void *, int, int), void *cookie); #else static char_u *do_one_cmd(char_u **, int, char_u *(*fgetline)(int, void *, int, int), void *cookie); static int if_level = 0; // depth in :if @@ -623,7 +623,7 @@ do_cmdline( int did_inc = FALSE; // incremented RedrawingDisabled int retval = OK; #ifdef FEAT_EVAL - struct condstack cstack; // conditional stack + cstack_T cstack; // conditional stack garray_T lines_ga; // keep lines for ":while"/":for" int current_line = 0; // active line in lines_ga char_u *fname = NULL; // function or script name @@ -671,7 +671,7 @@ do_cmdline( #ifdef FEAT_EVAL // When converting to an exception, we do not include the command name // since this is not an error of the specific command. - do_errthrow((struct condstack *)NULL, (char_u *)NULL); + do_errthrow((cstack_T *)NULL, (char_u *)NULL); msg_list = saved_msg_list; #endif return FAIL; @@ -1628,25 +1628,25 @@ current_tab_nr(tabpage_T *tab) #endif static char_u * do_one_cmd( - char_u **cmdlinep, - int sourcing, + char_u **cmdlinep, + int sourcing, #ifdef FEAT_EVAL - struct condstack *cstack, -#endif - char_u *(*fgetline)(int, void *, int, int), - void *cookie) // argument for fgetline() -{ - char_u *p; - linenr_T lnum; - long n; - char *errormsg = NULL; // error message - char_u *after_modifier = NULL; - exarg_T ea; // Ex command arguments - int save_msg_scroll = msg_scroll; - cmdmod_T save_cmdmod; - int save_reg_executing = reg_executing; - int ni; // set when Not Implemented - char_u *cmd; + cstack_T *cstack, +#endif + char_u *(*fgetline)(int, void *, int, int), + void *cookie) // argument for fgetline() +{ + char_u *p; + linenr_T lnum; + long n; + char *errormsg = NULL; // error message + char_u *after_modifier = NULL; + exarg_T ea; // Ex command arguments + int save_msg_scroll = msg_scroll; + cmdmod_T save_cmdmod; + int save_reg_executing = reg_executing; + int ni; // set when Not Implemented + char_u *cmd; vim_memset(&ea, 0, sizeof(ea)); ea.line1 = 1; diff --git a/src/ex_eval.c b/src/ex_eval.c --- a/src/ex_eval.c +++ b/src/ex_eval.c @@ -16,7 +16,7 @@ #if defined(FEAT_EVAL) || defined(PROTO) static int throw_exception(void *, except_type_T, char_u *); -static char *get_end_emsg(struct condstack *cstack); +static char *get_end_emsg(cstack_T *cstack); /* * Exception handling terms: @@ -330,7 +330,7 @@ free_global_msglist(void) * has returned (see do_one_cmd()). */ void -do_errthrow(struct condstack *cstack, char_u *cmdname) +do_errthrow(cstack_T *cstack, char_u *cmdname) { /* * Ensure that all commands in nested function calls and sourced files @@ -365,7 +365,7 @@ do_errthrow(struct condstack *cstack, ch * FALSE otherwise. */ int -do_intthrow(struct condstack *cstack) +do_intthrow(cstack_T *cstack) { /* * If no interrupt occurred or no try conditional is active and no exception @@ -892,7 +892,7 @@ ex_if(exarg_T *eap) int error; int skip; int result; - struct condstack *cstack = eap->cstack; + cstack_T *cstack = eap->cstack; if (cstack->cs_idx == CSTACK_LEN - 1) eap->errmsg = N_("E579: :if nesting too deep"); @@ -960,7 +960,7 @@ ex_else(exarg_T *eap) int error; int skip; int result; - struct condstack *cstack = eap->cstack; + cstack_T *cstack = eap->cstack; /* * Don't do something after an error, interrupt, or throw, or when there is @@ -1051,7 +1051,7 @@ ex_while(exarg_T *eap) int error; int skip; int result; - struct condstack *cstack = eap->cstack; + cstack_T *cstack = eap->cstack; if (cstack->cs_idx == CSTACK_LEN - 1) eap->errmsg = N_("E585: :while/:for nesting too deep"); @@ -1148,7 +1148,7 @@ ex_while(exarg_T *eap) ex_continue(exarg_T *eap) { int idx; - struct condstack *cstack = eap->cstack; + cstack_T *cstack = eap->cstack; if (cstack->cs_looplevel <= 0 || cstack->cs_idx < 0) eap->errmsg = N_("E586: :continue without :while or :for"); @@ -1186,7 +1186,7 @@ ex_continue(exarg_T *eap) ex_break(exarg_T *eap) { int idx; - struct condstack *cstack = eap->cstack; + cstack_T *cstack = eap->cstack; if (cstack->cs_looplevel <= 0 || cstack->cs_idx < 0) eap->errmsg = N_("E587: :break without :while or :for"); @@ -1211,11 +1211,11 @@ ex_break(exarg_T *eap) void ex_endwhile(exarg_T *eap) { - struct condstack *cstack = eap->cstack; - int idx; - char *err; - int csf; - int fl; + cstack_T *cstack = eap->cstack; + int idx; + char *err; + int csf; + int fl; if (eap->cmdidx == CMD_endwhile) { @@ -1325,7 +1325,7 @@ ex_throw(exarg_T *eap) * used for rethrowing an uncaught exception. */ void -do_throw(struct condstack *cstack) +do_throw(cstack_T *cstack) { int idx; int inactivate_try = FALSE; @@ -1409,7 +1409,7 @@ do_throw(struct condstack *cstack) ex_try(exarg_T *eap) { int skip; - struct condstack *cstack = eap->cstack; + cstack_T *cstack = eap->cstack; if (cstack->cs_idx == CSTACK_LEN - 1) eap->errmsg = N_("E601: :try nesting too deep"); @@ -1486,7 +1486,7 @@ ex_catch(exarg_T *eap) char_u *save_cpo; regmatch_T regmatch; int prev_got_int; - struct condstack *cstack = eap->cstack; + cstack_T *cstack = eap->cstack; char_u *pat; if (cstack->cs_trylevel <= 0 || cstack->cs_idx < 0) @@ -1644,7 +1644,7 @@ ex_finally(exarg_T *eap) int idx; int skip = FALSE; int pending = CSTP_NONE; - struct condstack *cstack = eap->cstack; + cstack_T *cstack = eap->cstack; if (cstack->cs_trylevel <= 0 || cstack->cs_idx < 0) eap->errmsg = N_("E606: :finally without :try"); @@ -1773,7 +1773,7 @@ ex_endtry(exarg_T *eap) int rethrow = FALSE; int pending = CSTP_NONE; void *rettv = NULL; - struct condstack *cstack = eap->cstack; + cstack_T *cstack = eap->cstack; if (cstack->cs_trylevel <= 0 || cstack->cs_idx < 0) eap->errmsg = N_("E602: :endtry without :try"); @@ -2113,7 +2113,7 @@ leave_cleanup(cleanup_T *csp) */ int cleanup_conditionals( - struct condstack *cstack, + cstack_T *cstack, int searched_cond, int inclusive) { @@ -2235,7 +2235,7 @@ cleanup_conditionals( * Return an appropriate error message for a missing endwhile/endfor/endif. */ static char * -get_end_emsg(struct condstack *cstack) +get_end_emsg(cstack_T *cstack) { if (cstack->cs_flags[cstack->cs_idx] & CSF_WHILE) return e_endwhile; @@ -2254,7 +2254,7 @@ get_end_emsg(struct condstack *cstack) */ void rewind_conditionals( - struct condstack *cstack, + cstack_T *cstack, int idx, int cond_type, int *cond_level) diff --git a/src/proto/ex_eval.pro b/src/proto/ex_eval.pro --- a/src/proto/ex_eval.pro +++ b/src/proto/ex_eval.pro @@ -5,8 +5,8 @@ int should_abort(int retcode); int aborted_in_try(void); int cause_errthrow(char_u *mesg, int severe, int *ignore); void free_global_msglist(void); -void do_errthrow(struct condstack *cstack, char_u *cmdname); -int do_intthrow(struct condstack *cstack); +void do_errthrow(cstack_T *cstack, char_u *cmdname); +int do_intthrow(cstack_T *cstack); char *get_exception_string(void *value, except_type_T type, char_u *cmdname, int *should_free); void discard_current_exception(void); void report_make_pending(int pending, void *value); @@ -19,15 +19,15 @@ void ex_continue(exarg_T *eap); void ex_break(exarg_T *eap); void ex_endwhile(exarg_T *eap); void ex_throw(exarg_T *eap); -void do_throw(struct condstack *cstack); +void do_throw(cstack_T *cstack); void ex_try(exarg_T *eap); void ex_catch(exarg_T *eap); void ex_finally(exarg_T *eap); void ex_endtry(exarg_T *eap); void enter_cleanup(cleanup_T *csp); void leave_cleanup(cleanup_T *csp); -int cleanup_conditionals(struct condstack *cstack, int searched_cond, int inclusive); -void rewind_conditionals(struct condstack *cstack, int idx, int cond_type, int *cond_level); +int cleanup_conditionals(cstack_T *cstack, int searched_cond, int inclusive); +void rewind_conditionals(cstack_T *cstack, int idx, int cond_type, int *cond_level); void ex_endfunction(exarg_T *eap); int has_loop_cmd(char_u *p); /* vim: set ft=c : */ diff --git a/src/structs.h b/src/structs.h --- a/src/structs.h +++ b/src/structs.h @@ -863,8 +863,7 @@ struct eslist_elem */ #define CSTACK_LEN 50 -struct condstack -{ +typedef struct { short cs_flags[CSTACK_LEN]; // CSF_ flags char cs_pending[CSTACK_LEN]; // CSTP_: what's pending in ":finally" union { @@ -878,7 +877,7 @@ struct condstack int cs_trylevel; // nr of nested ":try"s eslist_T *cs_emsg_silent_list; // saved values of "emsg_silent" char cs_lflags; // loop flags: CSL_ flags -}; +} cstack_T; # define cs_rettv cs_pend.csp_rv # define cs_exception cs_pend.csp_ex @@ -912,7 +911,7 @@ struct condstack # define CSTP_FINISH 32 // ":finish" is pending /* - * Flags for the cs_lflags item in struct condstack. + * Flags for the cs_lflags item in cstack_T. */ # define CSL_HAD_LOOP 1 // just found ":while" or ":for" # define CSL_HAD_ENDLOOP 2 // just found ":endwhile" or ":endfor" diff --git a/src/userfunc.c b/src/userfunc.c --- a/src/userfunc.c +++ b/src/userfunc.c @@ -3234,7 +3234,7 @@ do_return( void *rettv) { int idx; - struct condstack *cstack = eap->cstack; + cstack_T *cstack = eap->cstack; if (reanimate) // Undo the return. diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -743,6 +743,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 13, +/**/ 12, /**/ 11,