Don't use pointers to store numbers, use a union.
Fixed MSVC makefile use of /Wp64 flag.
diff --git a/src/structs.h b/src/structs.h
index 927aa06..daf254f 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -287,10 +287,24 @@
 
 struct u_header
 {
-    u_header_T	*uh_next;	/* pointer to next undo header in list */
-    u_header_T	*uh_prev;	/* pointer to previous header in list */
-    u_header_T	*uh_alt_next;	/* pointer to next header for alt. redo */
-    u_header_T	*uh_alt_prev;	/* pointer to previous header for alt. redo */
+    /* The following have a pointer and a number. The number is used when
+     * reading the undo file in u_read_undo() */
+    union {
+	u_header_T *ptr;	/* pointer to next undo header in list */
+	long	   seq;
+    } uh_next;
+    union {
+	u_header_T *ptr;	/* pointer to previous header in list */
+	long	   seq;
+    } uh_prev;
+    union {
+	u_header_T *ptr;	/* pointer to next header for alt. redo */
+	long	   seq;
+    } uh_alt_next;
+    union {
+	u_header_T *ptr;	/* pointer to previous header for alt. redo */
+	long	   seq;
+    } uh_alt_prev;
     long	uh_seq;		/* sequence number, higher == newer undo */
     int		uh_walk;	/* used by undo_time() */
     u_entry_T	*uh_entry;	/* pointer to first entry */