diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 983378c..14b43bd 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -1841,7 +1841,7 @@
     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
index fb07450..ba51640 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -20,7 +20,7 @@
 #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 @@
     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 @@
 #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 @@
 #endif
     static char_u *
 do_one_cmd(
-    char_u		**cmdlinep,
-    int			sourcing,
+    char_u	**cmdlinep,
+    int		sourcing,
 #ifdef FEAT_EVAL
-    struct condstack	*cstack,
+    cstack_T	*cstack,
 #endif
-    char_u		*(*fgetline)(int, void *, int, int),
-    void		*cookie)		// argument for fgetline()
+    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;
+    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
index 645b27d..4d76572 100644
--- 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 @@
  * 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 @@
  * 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 @@
     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 @@
     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 @@
     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_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_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 @@
     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 @@
  * 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 @@
 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 @@
     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 @@
     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 @@
     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 @@
  */
     int
 cleanup_conditionals(
-    struct condstack   *cstack,
+    cstack_T   *cstack,
     int		searched_cond,
     int		inclusive)
 {
@@ -2235,7 +2235,7 @@
  * 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 @@
  */
     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
index 2b6bdc6..bd68eea 100644
--- a/src/proto/ex_eval.pro
+++ b/src/proto/ex_eval.pro
@@ -5,8 +5,8 @@
 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_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
index 3e5be69..71b5c61 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -863,8 +863,7 @@
  */
 #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 @@
     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 @@
 # 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
index 020098d..948c5f1 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3234,7 +3234,7 @@
     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
index 27a42e0..fec1465 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    13,
+/**/
     12,
 /**/
     11,
