updated for version 7.4.640
Problem:    After deleting characters in Insert mode such that lines are
            joined undo does not work properly. (issue 324)
Solution:   Use Insstart instead of Insstart_orig. (Christian Brabandt)
diff --git a/src/edit.c b/src/edit.c
index 2a79582..2e5d317 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -8842,7 +8842,7 @@
      */
     if (curwin->w_cursor.col == 0)
     {
-	lnum = Insstart_orig.lnum;
+	lnum = Insstart.lnum;
 	if (curwin->w_cursor.lnum == lnum
 #ifdef FEAT_RIGHTLEFT
 			|| revins_on
@@ -8852,9 +8852,8 @@
 	    if (u_save((linenr_T)(curwin->w_cursor.lnum - 2),
 			       (linenr_T)(curwin->w_cursor.lnum + 1)) == FAIL)
 		return FALSE;
-	    --Insstart_orig.lnum;
-	    Insstart_orig.col = MAXCOL;
-	    Insstart = Insstart_orig;
+	    --Insstart.lnum;
+	    Insstart.col = MAXCOL;
 	}
 	/*
 	 * In replace mode:
diff --git a/src/version.c b/src/version.c
index e920644..3365c80 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    640,
+/**/
     639,
 /**/
     638,