Mercurial > vim
changeset 10361:147f45c283e1 v8.0.0075
commit https://github.com/vim/vim/commit/8a5883b7488e492419dde7e1637cc72f2d566ba4
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Nov 10 20:20:05 2016 +0100
patch 8.0.0075
Problem: Using number for exception type lacks type checking.
Solution: Use an enum.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 10 Nov 2016 20:30:04 +0100 |
parents | 2f43c2755235 |
children | d4804cb77036 |
files | src/ex_docmd.c src/ex_eval.c src/proto/ex_eval.pro src/structs.h src/version.c |
diffstat | 5 files changed, 17 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -1388,8 +1388,6 @@ do_cmdline( break; case ET_INTERRUPT: break; - default: - p = vim_strsave((char_u *)_(e_internal)); } saved_sourcing_name = sourcing_name;
--- a/src/ex_eval.c +++ b/src/ex_eval.c @@ -16,7 +16,7 @@ #if defined(FEAT_EVAL) || defined(PROTO) static void free_msglist(struct msglist *l); -static int throw_exception(void *, int, char_u *); +static int throw_exception(void *, except_type_T, char_u *); static char_u *get_end_emsg(struct condstack *cstack); /* @@ -422,7 +422,7 @@ do_intthrow(struct condstack *cstack) char_u * get_exception_string( void *value, - int type, + except_type_T type, char_u *cmdname, int *should_free) { @@ -503,7 +503,7 @@ get_exception_string( * error exception. */ static int -throw_exception(void *value, int type, char_u *cmdname) +throw_exception(void *value, except_type_T type, char_u *cmdname) { except_T *excp; int should_free;
--- a/src/proto/ex_eval.pro +++ b/src/proto/ex_eval.pro @@ -7,7 +7,7 @@ int cause_errthrow(char_u *mesg, int sev void free_global_msglist(void); void do_errthrow(struct condstack *cstack, char_u *cmdname); int do_intthrow(struct condstack *cstack); -char_u *get_exception_string(void *value, int type, char_u *cmdname, int *should_free); +char_u *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); void report_resume_pending(int pending, void *value);
--- a/src/structs.h +++ b/src/structs.h @@ -815,13 +815,23 @@ struct msglist }; /* + * The exception types. + */ +typedef enum +{ + ET_USER, /* exception caused by ":throw" command */ + ET_ERROR, /* error exception */ + ET_INTERRUPT /* interrupt exception triggered by Ctrl-C */ +} except_type_T; + +/* * Structure describing an exception. * (don't use "struct exception", it's used by the math library). */ typedef struct vim_exception except_T; struct vim_exception { - int type; /* exception type */ + except_type_T type; /* exception type */ char_u *value; /* exception value */ struct msglist *messages; /* message(s) causing error exception */ char_u *throw_name; /* name of the throw point */ @@ -830,13 +840,6 @@ struct vim_exception }; /* - * The exception types. - */ -#define ET_USER 0 /* exception caused by ":throw" command */ -#define ET_ERROR 1 /* error exception */ -#define ET_INTERRUPT 2 /* interrupt exception triggered by Ctrl-C */ - -/* * Structure to save the error/interrupt/exception state between calls to * enter_cleanup() and leave_cleanup(). Must be allocated as an automatic * variable by the (common) caller of these functions.