diff --git a/src/gui_mac.c b/src/gui_mac.c
index 03dc326..e9a44b3 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -4305,6 +4305,15 @@
     RGBBackColor(&TheColor);
 }
 
+/*
+ * Set the current text speail color. TODO
+ */
+    void
+gui_mch_set_sp_color(color)
+    guicolor_T	color;
+{
+}
+
     void
 gui_mch_draw_string(row, col, s, len, flags)
     int		row;
diff --git a/src/os_msdos.c b/src/os_msdos.c
index 41d5877..963de38 100644
--- a/src/os_msdos.c
+++ b/src/os_msdos.c
@@ -989,9 +989,6 @@
     int		c;
     int		tmp_c;
     static int	nextchar = 0;	    /* may keep character when maxlen == 1 */
-#ifdef FEAT_AUTOCMD
-    static int	once_already = 0;
-#endif
 
     /*
      * if we got a ctrl-C when we were busy, there will be a "^C" somewhere
@@ -1027,38 +1024,26 @@
 #ifdef FEAT_MOUSE
 	    show_mouse(FALSE);
 #endif
-#ifdef FEAT_AUTOCMD
-	    once_already = 0;
-#endif
 	    return 0;
 	}
     }
     else    /* time == -1 */
     {
-#ifdef FEAT_AUTOCMD
-	if (once_already == 2)
-	    updatescript(0);
-	else if (once_already == 1)
-	{
-	    setcursor();
-	    once_already = 2;
-	    return 0;
-	}
-	else
-#endif
 	/*
 	 * If there is no character available within 2 seconds (default)
-	 * write the autoscript file to disk
+	 * write the autoscript file to disk.  Or cause the CursorHold event
+	 * to be triggered.
 	 */
-	    if (WaitForChar(p_ut) == 0)
+	if (WaitForChar(p_ut) == 0)
 	{
 #ifdef FEAT_AUTOCMD
-	    if (has_cursorhold() && get_real_state() == NORMAL_BUSY)
+	    if (!did_cursorhold && has_cursorhold()
+			    && get_real_state() == NORMAL_BUSY && maxlen >= 3)
 	    {
-		apply_autocmds(EVENT_CURSORHOLD, NULL, NULL, FALSE, curbuf);
-		update_screen(VALID);
-		once_already = 1;
-		return 0;
+		buf[0] = K_SPECIAL;
+		buf[1] = KS_EXTRA;
+		buf[2] = (int)KE_CURSORHOLD;
+		return 3;
 	    }
 	    else
 #endif
@@ -1194,9 +1179,6 @@
 #endif
 
     beep_count = 0;	    /* may beep again now that we got some chars */
-#ifdef FEAT_AUTOCMD
-    once_already = 0;
-#endif
     return len;
 }
 
diff --git a/src/regexp.c b/src/regexp.c
index 3d47c17..3cd7cc9 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -4522,7 +4522,7 @@
 		    /* It could match.  Prepare for trying to match what
 		     * follows.  The code is below.  Parameters are stored in
 		     * a regstar_T on the regstack. */
-		    if (((unsigned)regstack.ga_len >> 10) >= p_mmp)
+		    if ((long)((unsigned)regstack.ga_len >> 10) >= p_mmp)
 		    {
 			EMSG(_(e_maxmempat));
 			status = RA_FAIL;
@@ -4567,7 +4567,7 @@
 	  case BEHIND:
 	  case NOBEHIND:
 	    /* Need a bit of room to store extra positions. */
-	    if (((unsigned)regstack.ga_len >> 10) >= p_mmp)
+	    if ((long)((unsigned)regstack.ga_len >> 10) >= p_mmp)
 	    {
 		EMSG(_(e_maxmempat));
 		status = RA_FAIL;
@@ -5004,7 +5004,7 @@
 {
     regitem_T	*rp;
 
-    if (((unsigned)regstack->ga_len >> 10) >= p_mmp)
+    if ((long)((unsigned)regstack->ga_len >> 10) >= p_mmp)
     {
 	EMSG(_(e_maxmempat));
 	return NULL;
