diff --git a/src/buffer.c b/src/buffer.c
index 44aac34..7e848f6 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -3017,15 +3017,23 @@
 	if (*p_titlestring != NUL)
 	{
 #ifdef FEAT_STL_OPT
-	    int	    use_sandbox = FALSE;
+	    if (stl_syntax & STL_IN_TITLE)
+	    {
+		int	use_sandbox = FALSE;
+		int	save_called_emsg = called_emsg;
 
 # ifdef FEAT_EVAL
-	    use_sandbox = was_set_insecurely((char_u *)"titlestring", 0);
+		use_sandbox = was_set_insecurely((char_u *)"titlestring", 0);
 # endif
-	    if (stl_syntax & STL_IN_TITLE)
+		called_emsg = FALSE;
 		build_stl_str_hl(curwin, t_str, sizeof(buf),
 					      p_titlestring, use_sandbox,
 					      0, maxlen, NULL, NULL);
+		if (called_emsg)
+		    set_string_option_direct((char_u *)"titlestring", -1,
+					   (char_u *)"", OPT_FREE, SID_ERROR);
+		called_emsg |= save_called_emsg;
+	    }
 	    else
 #endif
 		t_str = p_titlestring;
@@ -3114,15 +3122,23 @@
 	if (*p_iconstring != NUL)
 	{
 #ifdef FEAT_STL_OPT
-	    int	    use_sandbox = FALSE;
+	    if (stl_syntax & STL_IN_ICON)
+	    {
+		int	use_sandbox = FALSE;
+		int	save_called_emsg = called_emsg;
 
 # ifdef FEAT_EVAL
-	    use_sandbox = was_set_insecurely((char_u *)"iconstring", 0);
+		use_sandbox = was_set_insecurely((char_u *)"iconstring", 0);
 # endif
-	    if (stl_syntax & STL_IN_ICON)
+		called_emsg = FALSE;
 		build_stl_str_hl(curwin, i_str, sizeof(buf),
 						    p_iconstring, use_sandbox,
 						    0, 0, NULL, NULL);
+		if (called_emsg)
+		    set_string_option_direct((char_u *)"iconstring", -1,
+					   (char_u *)"", OPT_FREE, SID_ERROR);
+		called_emsg |= save_called_emsg;
+	    }
 	    else
 #endif
 		i_str = p_iconstring;
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 3ba0d37..cfb55df 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -8196,7 +8196,10 @@
 ex_undo(eap)
     exarg_T	*eap;
 {
-    u_undo(1);
+    if (eap->addr_count == 1)	    /* :undo 123 */
+	undo_time(eap->line2, FALSE, TRUE);
+    else
+	u_undo(1);
 }
 
 /*
@@ -8238,7 +8241,7 @@
     if (*p != NUL)
 	EMSG2(_(e_invarg2), eap->arg);
     else
-	undo_time(eap->cmdidx == CMD_earlier ? -count : count, sec);
+	undo_time(eap->cmdidx == CMD_earlier ? -count : count, sec, FALSE);
 }
 
 /*
diff --git a/src/gui.c b/src/gui.c
index 0a2286b..07d7788 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -4394,6 +4394,10 @@
     win_T	*wp;
     char_u	st[6];
 
+    /* Ignore this while still starting up. */
+    if (!gui.in_use || gui.starting)
+	return;
+
 #ifdef FEAT_MOUSESHAPE
     /* Get window pointer, and update mouse shape as well. */
     wp = xy2win(x, y);
diff --git a/src/normal.c b/src/normal.c
index cf82d68..aae515c 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -8009,7 +8009,8 @@
     case '+':
     case '-': /* "g+" and "g-": undo or redo along the timeline */
 	if (!checkclearopq(oap))
-	    undo_time(cap->nchar == '-' ? -cap->count1 : cap->count1, FALSE);
+	    undo_time(cap->nchar == '-' ? -cap->count1 : cap->count1,
+								FALSE, FALSE);
 	break;
 
     default:
diff --git a/src/proto/undo.pro b/src/proto/undo.pro
index 01ef518..58c6db8 100644
--- a/src/proto/undo.pro
+++ b/src/proto/undo.pro
@@ -6,8 +6,9 @@
 int u_savedel __ARGS((linenr_T lnum, long nlines));
 void u_undo __ARGS((int count));
 void u_redo __ARGS((int count));
-void undo_time __ARGS((long step, int sec));
+void undo_time __ARGS((long step, int sec, int absolute));
 void u_sync __ARGS((void));
+void ex_undolist __ARGS((exarg_T *eap));
 void ex_undojoin __ARGS((exarg_T *eap));
 void u_unchanged __ARGS((buf_T *buf));
 void u_clearall __ARGS((buf_T *buf));
