diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index aff2bdd..f58bad7 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -2850,7 +2850,7 @@
  * Return the current time in seconds.  Calls time(), unless test_settime()
  * was used.
  */
-    time_t
+    time_T
 vim_time(void)
 {
 # ifdef FEAT_EVAL
diff --git a/src/globals.h b/src/globals.h
index f5e1bb1..f14cb89 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1608,7 +1608,7 @@
 #endif
 
 /* For undo we need to know the lowest time possible. */
-EXTERN time_t starttime;
+EXTERN time_T starttime;
 
 #ifdef STARTUPTIME
 EXTERN FILE *time_fd INIT(= NULL);  /* where to write startup timing */
@@ -1640,7 +1640,7 @@
 #endif
 
 #ifdef FEAT_EVAL
-EXTERN time_t time_for_testing INIT(= 0);
+EXTERN time_T time_for_testing INIT(= 0);
 #endif
 
 /*
diff --git a/src/misc2.c b/src/misc2.c
index 67486aa..1018e4b 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -6070,12 +6070,12 @@
 }
 
 /*
- * Read 8 bytes from "fd" and turn them into a time_t, MSB first.
+ * Read 8 bytes from "fd" and turn them into a time_T, MSB first.
  */
-    time_t
+    time_T
 get8ctime(FILE *fd)
 {
-    time_t	n = 0;
+    time_T	n = 0;
     int		i;
 
     for (i = 0; i < 8; ++i)
@@ -6137,11 +6137,11 @@
 #endif
 
 /*
- * Write time_t to file "fd" in 8 bytes.
+ * Write time_T to file "fd" in 8 bytes.
  * Returns FAIL when the write failed.
  */
     int
-put_time(FILE *fd, time_t the_time)
+put_time(FILE *fd, time_T the_time)
 {
     char_u	buf[8];
 
@@ -6150,26 +6150,26 @@
 }
 
 /*
- * Write time_t to "buf[8]".
+ * Write time_T to "buf[8]".
  */
     void
-time_to_bytes(time_t the_time, char_u *buf)
+time_to_bytes(time_T the_time, char_u *buf)
 {
     int		c;
     int		i;
     int		bi = 0;
-    time_t	wtime = the_time;
+    time_T	wtime = the_time;
 
-    /* time_t can be up to 8 bytes in size, more than long_u, thus we
+    /* time_T can be up to 8 bytes in size, more than long_u, thus we
      * can't use put_bytes() here.
      * Another problem is that ">>" may do an arithmetic shift that keeps the
      * sign.  This happens for large values of wtime.  A cast to long_u may
-     * truncate if time_t is 8 bytes.  So only use a cast when it is 4 bytes,
+     * truncate if time_T is 8 bytes.  So only use a cast when it is 4 bytes,
      * it's safe to assume that long_u is 4 bytes or more and when using 8
      * bytes the top bit won't be set. */
     for (i = 7; i >= 0; --i)
     {
-	if (i + 1 > (int)sizeof(time_t))
+	if (i + 1 > (int)sizeof(time_T))
 	    /* ">>" doesn't work well when shifting more bits than avail */
 	    buf[bi++] = 0;
 	else
diff --git a/src/proto/ex_cmds.pro b/src/proto/ex_cmds.pro
index bc624bf..b371314 100644
--- a/src/proto/ex_cmds.pro
+++ b/src/proto/ex_cmds.pro
@@ -17,7 +17,7 @@
 char_u *viminfo_readstring(vir_T *virp, int off, int convert);
 void viminfo_writestring(FILE *fd, char_u *p);
 int barline_writestring(FILE *fd, char_u *s, int remaining_start);
-time_t vim_time(void);
+time_T vim_time(void);
 void do_fixdel(exarg_T *eap);
 void print_line_no_prefix(linenr_T lnum, int use_number, int list);
 void print_line(linenr_T lnum, int use_number, int list);
diff --git a/src/proto/misc2.pro b/src/proto/misc2.pro
index 676eb95..573dee5 100644
--- a/src/proto/misc2.pro
+++ b/src/proto/misc2.pro
@@ -103,11 +103,11 @@
 int get2c(FILE *fd);
 int get3c(FILE *fd);
 int get4c(FILE *fd);
-time_t get8ctime(FILE *fd);
+time_T get8ctime(FILE *fd);
 char_u *read_string(FILE *fd, int cnt);
 int put_bytes(FILE *fd, long_u nr, int len);
-int put_time(FILE *fd, time_t the_time);
-void time_to_bytes(time_t the_time, char_u *buf);
+int put_time(FILE *fd, time_T the_time);
+void time_to_bytes(time_T the_time, char_u *buf);
 int has_non_ascii(char_u *s);
 void parse_queued_messages(void);
 /* vim: set ft=c : */
diff --git a/src/structs.h b/src/structs.h
index 6075ee2..fd8aaa1 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -113,7 +113,7 @@
     fmark_T	fmark;
     char_u	*fname;		/* file name, used when fnum == 0 */
 #ifdef FEAT_VIMINFO
-    time_t	time_set;
+    time_T	time_set;
 #endif
 } xfmark_T;
 
@@ -358,7 +358,7 @@
     int		uh_flags;	/* see below */
     pos_T	uh_namedm[NMARKS];	/* marks before undo/after redo */
     visualinfo_T uh_visual;	/* Visual areas before undo/after redo */
-    time_t	uh_time;	/* timestamp when the change was made */
+    time_T	uh_time;	/* timestamp when the change was made */
     long	uh_save_nr;	/* set when the file was saved after the
 				   changes in this block */
 #ifdef U_DEBUG
@@ -1816,7 +1816,7 @@
     long	b_u_seq_last;	/* last used undo sequence number */
     long	b_u_save_nr_last; /* counter for last file write */
     long	b_u_seq_cur;	/* hu_seq of header below which we are now */
-    time_t	b_u_time_cur;	/* uh_time of header below which we are now */
+    time_T	b_u_time_cur;	/* uh_time of header below which we are now */
     long	b_u_save_nr_cur; /* file write nr after which we are now */
 
     /*
diff --git a/src/version.c b/src/version.c
index 78f8629..2df5c36 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1955,
+/**/
     1954,
 /**/
     1953,
diff --git a/src/vim.h b/src/vim.h
index 7c933d5..88a28d4 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1761,6 +1761,17 @@
 typedef int proftime_T;	    /* dummy for function prototypes */
 #endif
 
+/*
+ * When compiling with 32 bit Perl time_t is 32 bits in the Perl code but 64
+ * bits elsewhere.  That causes memory corruption.  Define time_T and use it
+ * for global variables to avoid that.
+ */
+#ifdef WIN3264
+typedef __time64_t  time_T;
+#else
+typedef time_t	    time_T;
+#endif
+
 #ifdef _WIN64
 typedef __int64 sock_T;
 #else
