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.
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    75,
+/**/
     74,
 /**/
     73,