diff --git a/src/blowfish.c b/src/blowfish.c
index 01e0993..02d9008 100644
--- a/src/blowfish.c
+++ b/src/blowfish.c
@@ -542,7 +542,7 @@
     int i, mi;
 
     randbyte_offset = update_offset = 0;
-    memset(ofb_buffer, 0, BF_OFB_LEN);
+    vim_memset(ofb_buffer, 0, BF_OFB_LEN);
     if (iv_len > 0)
     {
 	mi = iv_len > BF_OFB_LEN ? iv_len : BF_OFB_LEN;
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 4097f1d..6d0ce24 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -847,7 +847,7 @@
     if (flags & DOCMD_EXCRESET)
 	save_dbg_stuff(&debug_saved);
     else
-	memset(&debug_saved, 0, 1);
+	vim_memset(&debug_saved, 0, 1);
 
     initial_trylevel = trylevel;
 
diff --git a/src/fileio.c b/src/fileio.c
index b7c86af..779a0d6 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4328,7 +4328,7 @@
 
 	use_crypt_method = buf->b_p_cm;  /* select pkzip or blowfish */
 
-	memset(header, 0, sizeof(header));
+	vim_memset(header, 0, sizeof(header));
 	vim_strncpy(header, (char_u *)crypt_magic[use_crypt_method],
 							     CRYPT_MAGIC_LEN);
 
diff --git a/src/gui_mac.c b/src/gui_mac.c
index 9112c56..8859857 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -5654,7 +5654,7 @@
     button = 0;
 
     /* initialize the hotkey mapping */
-    memset(hotKeys, 0, sizeof(hotKeys));
+    vim_memset(hotKeys, 0, sizeof(hotKeys));
 
     for (;*buttonChar != 0;)
     {
diff --git a/src/gui_motif.c b/src/gui_motif.c
index 1a7e038..397ab59 100644
--- a/src/gui_motif.c
+++ b/src/gui_motif.c
@@ -2023,7 +2023,7 @@
 
 		    XmProcessTraversal(w, XmTRAVERSE_CURRENT);
 
-		    memset((char *) &keyEvent, 0, sizeof(XKeyPressedEvent));
+		    vim_memset((char *) &keyEvent, 0, sizeof(XKeyPressedEvent));
 		    keyEvent.type = KeyPress;
 		    keyEvent.serial = 1;
 		    keyEvent.send_event = True;
diff --git a/src/gui_w48.c b/src/gui_w48.c
index 2f36739..6e567f6 100644
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -3341,7 +3341,7 @@
     /* Convert the filter to Windows format. */
     filterp = convert_filterW(filter);
 
-    memset(&fileStruct, 0, sizeof(OPENFILENAMEW));
+    vim_memset(&fileStruct, 0, sizeof(OPENFILENAMEW));
 #ifdef OPENFILENAME_SIZE_VERSION_400
     /* be compatible with Windows NT 4.0 */
     /* TODO: what to use for OPENFILENAMEW??? */
@@ -3503,7 +3503,7 @@
     /* Convert the filter to Windows format. */
     filterp = convert_filter(filter);
 
-    memset(&fileStruct, 0, sizeof(OPENFILENAME));
+    vim_memset(&fileStruct, 0, sizeof(OPENFILENAME));
 #ifdef OPENFILENAME_SIZE_VERSION_400
     /* be compatible with Windows NT 4.0 */
     fileStruct.lStructSize = OPENFILENAME_SIZE_VERSION_400;
@@ -3842,7 +3842,7 @@
 		    /* Halve the number of backslashes. */
 		    if (i > 1 && pnew != NULL)
 		    {
-			memset(pnew, '\\', i / 2);
+			vim_memset(pnew, '\\', i / 2);
 			pnew += i / 2;
 		    }
 
@@ -3859,7 +3859,7 @@
 		    /* Copy span of backslashes unmodified. */
 		    if (pnew != NULL)
 		    {
-			memset(pnew, '\\', i);
+			vim_memset(pnew, '\\', i);
 			pnew += i;
 		    }
 		    p += i;
diff --git a/src/hardcopy.c b/src/hardcopy.c
index 0e7ee4d..e70390d 100644
--- a/src/hardcopy.c
+++ b/src/hardcopy.c
@@ -568,7 +568,7 @@
     int			page_line;
     int			jobsplit;
 
-    memset(&settings, 0, sizeof(prt_settings_T));
+    vim_memset(&settings, 0, sizeof(prt_settings_T));
     settings.has_color = TRUE;
 
 # ifdef FEAT_POSTSCRIPT
@@ -691,7 +691,7 @@
 	prt_pos_T	page_prtpos;	/* print position at page start */
 	int		side;
 
-	memset(&page_prtpos, 0, sizeof(prt_pos_T));
+	vim_memset(&page_prtpos, 0, sizeof(prt_pos_T));
 	page_prtpos.file_line = eap->line1;
 	prtpos = page_prtpos;
 
diff --git a/src/integration.c b/src/integration.c
index c86a8a5..9da6e2f 100644
--- a/src/integration.c
+++ b/src/integration.c
@@ -662,7 +662,7 @@
 
 	/* Get the server internet address and put into addr structure */
 	/* fill in the socket address structure and connect to server */
-	memset((char *)&server, '\0', sizeof(server));
+	vim_memset((char *)&server, '\0', sizeof(server));
 	server.sin_family = AF_INET;
 	server.sin_port = port;
 	if ((host = gethostbyname(NOCATGETS("localhost"))) == NULL) {
diff --git a/src/main.c b/src/main.c
index cba40ea..ec7675e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3643,7 +3643,7 @@
 # endif
 
 		/* Wait for all files to unload in remote */
-		memset(done, 0, numFiles);
+		vim_memset(done, 0, numFiles);
 		while (memchr(done, 0, numFiles) != NULL)
 		{
 # ifdef WIN32
diff --git a/src/misc2.c b/src/misc2.c
index 6d13f1c..03af4cc 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -4178,7 +4178,7 @@
 	search_ctx = (ff_search_ctx_T*)alloc((unsigned)sizeof(ff_search_ctx_T));
 	if (search_ctx == NULL)
 	    goto error_return;
-	memset(search_ctx, 0, sizeof(ff_search_ctx_T));
+	vim_memset(search_ctx, 0, sizeof(ff_search_ctx_T));
     }
     search_ctx->ffsc_find_what = find_what;
 
diff --git a/src/netbeans.c b/src/netbeans.c
index 9e31fba..bd83f64 100644
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -303,7 +303,7 @@
 
     /* Get the server internet address and put into addr structure */
     /* fill in the socket address structure and connect to server */
-    memset((char *)&server, '\0', sizeof(server));
+    vim_memset((char *)&server, '\0', sizeof(server));
     server.sin_family = AF_INET;
     server.sin_port = htons(port);
     if ((host = gethostbyname(hostname)) == NULL)
@@ -1079,7 +1079,8 @@
 	    buf_list_size += incr;
 	    buf_list = (nbbuf_T *)vim_realloc(
 				   buf_list, buf_list_size * sizeof(nbbuf_T));
-	    memset(buf_list + buf_list_size - incr, 0, incr * sizeof(nbbuf_T));
+	    vim_memset(buf_list + buf_list_size - incr, 0,
+						      incr * sizeof(nbbuf_T));
 	}
 
 	while (buf_list_used <= bufno)
@@ -3662,7 +3663,7 @@
 		incr = globalsignmaplen - oldlen;
 		globalsignmap = (char **)vim_realloc(globalsignmap,
 					   globalsignmaplen * sizeof(char *));
-		memset(globalsignmap + oldlen, 0, incr * sizeof(char *));
+		vim_memset(globalsignmap + oldlen, 0, incr * sizeof(char *));
 	    }
 	}
 
@@ -3691,7 +3692,7 @@
 	    incr = buf->signmaplen - oldlen;
 	    buf->signmap = (int *)vim_realloc(buf->signmap,
 					       buf->signmaplen*sizeof(int *));
-	    memset(buf->signmap + oldlen, 0, incr * sizeof(int *));
+	    vim_memset(buf->signmap + oldlen, 0, incr * sizeof(int *));
 	}
     }
 
diff --git a/src/os_macosx.c b/src/os_macosx.c
index 48023e3..0868ef0 100644
--- a/src/os_macosx.c
+++ b/src/os_macosx.c
@@ -291,7 +291,7 @@
     cd = (iconv_t)alloc(sizeof(struct _iconv_t));
     if (!cd)
 	goto ICONV_OPEN_ERR;
-    memset(cd, 0, sizeof(struct _iconv_t));
+    vim_memset(cd, 0, sizeof(struct _iconv_t));
 
     /* Create converter */
     if (fromEnc != toEnc)
diff --git a/src/os_mswin.c b/src/os_mswin.c
index c3588e6..2e692a7 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -2077,7 +2077,7 @@
     int			i;
 
     bUserAbort = &(psettings->user_abort);
-    memset(&prt_dlg, 0, sizeof(PRINTDLG));
+    vim_memset(&prt_dlg, 0, sizeof(PRINTDLG));
     prt_dlg.lStructSize = sizeof(PRINTDLG);
 #ifndef FEAT_GUI
     GetConsoleHwnd();	    /* get value of s_hwnd */
@@ -2192,7 +2192,7 @@
     /*
      * Initialise the font according to 'printfont'
      */
-    memset(&fLogFont, 0, sizeof(fLogFont));
+    vim_memset(&fLogFont, 0, sizeof(fLogFont));
     if (get_logfont(&fLogFont, p_pfn, prt_dlg.hDC, TRUE) == FAIL)
     {
 	EMSG2(_("E613: Unknown printer font: %s"), p_pfn);
@@ -2285,7 +2285,7 @@
     wsprintf(szBuffer, _("Printing '%s'"), gettail(psettings->jobname));
     SetDlgItemText(hDlgPrint, IDC_PRINTTEXT1, (LPSTR)szBuffer);
 
-    memset(&di, 0, sizeof(DOCINFO));
+    vim_memset(&di, 0, sizeof(DOCINFO));
     di.cbSize = sizeof(DOCINFO);
     di.lpszDocName = psettings->jobname;
     ret = StartDoc(prt_dlg.hDC, &di);
@@ -3362,7 +3362,7 @@
 #if defined(FEAT_GUI_W32)
 	CHOOSEFONT	cf;
 	/* if name is "*", bring up std font dialog: */
-	memset(&cf, 0, sizeof(cf));
+	vim_memset(&cf, 0, sizeof(cf));
 	cf.lStructSize = sizeof(cf);
 	cf.hwndOwner = s_hwnd;
 	cf.Flags = CF_SCREENFONTS | CF_FIXEDPITCHONLY | CF_INITTOLOGFONTSTRUCT;
diff --git a/src/os_win32.c b/src/os_win32.c
index 3d0ba7d..0ba2391 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -604,7 +604,7 @@
     if (pker->AChar != 0)
 	return 1;
 
-    memset(abKeystate, 0, sizeof (abKeystate));
+    vim_memset(abKeystate, 0, sizeof (abKeystate));
 
     // Should only be non-NULL on NT 4.0
     if (s_pfnGetConsoleKeyboardLayoutName != NULL)
diff --git a/src/proto/sha256.pro b/src/proto/sha256.pro
index e9a3d3c..c5237f4 100644
--- a/src/proto/sha256.pro
+++ b/src/proto/sha256.pro
@@ -1,6 +1,6 @@
 /* sha256.c */
 void sha256_start __ARGS((context_sha256_T *ctx));
-void sha256_update __ARGS((context_sha256_T *ctx, char_u *input, uint32_t length));
+void sha256_update __ARGS((context_sha256_T *ctx, char_u *input, UINT32_T length));
 void sha256_finish __ARGS((context_sha256_T *ctx, char_u digest[32]));
 char_u *sha256_key __ARGS((char_u *buf));
 int sha256_self_test __ARGS((void));
diff --git a/src/sha256.c b/src/sha256.c
index 048ce75..6ea3f81 100644
--- a/src/sha256.c
+++ b/src/sha256.c
@@ -360,7 +360,7 @@
 	else
 	{
 	    sha256_start(&ctx);
-	    memset(buf, 'a', 1000);
+	    vim_memset(buf, 'a', 1000);
 	    for (j = 0; j < 1000; j++)
 		sha256_update(&ctx, (char_u *)buf, 1000);
 	    sha256_finish(&ctx, sha256sum);
diff --git a/src/syntax.c b/src/syntax.c
index 1eeb9bc..9613482 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -8986,7 +8986,7 @@
     hlcnt = highlight_ga.ga_len;
     if (id_S == 0)
     {		    /* Make sure id_S is always valid to simplify code below */
-	memset(&HL_TABLE()[hlcnt + 9], 0, sizeof(struct hl_group));
+	vim_memset(&HL_TABLE()[hlcnt + 9], 0, sizeof(struct hl_group));
 	HL_TABLE()[hlcnt + 9].sg_term = highlight_attr[HLF_S];
 	id_S = hlcnt + 10;
     }
@@ -9012,7 +9012,7 @@
 # ifdef FEAT_STL_OPT
 	    if (id_SNC == 0)
 	    {
-		memset(&hlt[hlcnt + i], 0, sizeof(struct hl_group));
+		vim_memset(&hlt[hlcnt + i], 0, sizeof(struct hl_group));
 		hlt[hlcnt + i].sg_term = highlight_attr[HLF_SNC];
 		hlt[hlcnt + i].sg_cterm = highlight_attr[HLF_SNC];
 #  ifdef FEAT_GUI
diff --git a/src/undo.c b/src/undo.c
index b4945d1..44a7c95 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -595,6 +595,7 @@
     uep = (u_entry_T *)U_ALLOC_LINE((unsigned)sizeof(u_entry_T));
     if (uep == NULL)
 	goto nomem;
+    vim_memset(uep, 0, sizeof(u_entry_T));
 #ifdef U_DEBUG
     uep->ue_magic = UE_MAGIC;
 #endif
@@ -879,7 +880,7 @@
         if (p_verbose > 0 || name != NULL)
         {
             verbose_enter();
-            give_warning((char_u *)_("Undo file contents changed"), TRUE);
+            give_warning((char_u *)_("File contents changed, cannot use undo info"), TRUE);
             verbose_leave();
         }
         goto error;
@@ -967,9 +968,9 @@
         while ((uep_len = get4c(fp)) != -1)
         {
             uep = (u_entry_T *)U_ALLOC_LINE((unsigned)sizeof(u_entry_T));
-            vim_memset(uep, 0, sizeof(u_entry_T));
             if (uep == NULL)
                 goto error;
+            vim_memset(uep, 0, sizeof(u_entry_T));
             uep->ue_top = get4c(fp);
             uep->ue_bot = get4c(fp);
             uep->ue_lcount = get4c(fp);
diff --git a/src/vim.h b/src/vim.h
index 0447273..86d677b 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -51,16 +51,16 @@
 
 /* We may need to define the uint32_t on non-Unix system, but using the same
  * identifier causes conflicts.  Therefore use UINT32_T. */
-# define UINT32_T uint32_t
+# define UINT32_TYPEDEF uint32_t
 #endif
 
-#if !defined(UINT32_T)
+#if !defined(UINT32_TYPEDEF)
 # if defined(uint32_t)  /* this doesn't catch typedefs, unfortunately */
-#  define UINT32_T uint32_t
+#  define UINT32_TYPEDEF uint32_t
 # else
   /* Fall back to assuming unsigned int is 32 bit.  If this is wrong then the
    * test in blowfish.c will fail. */
-#  define UINT32_T unsigned int
+#  define UINT32_TYPEDEF unsigned int
 # endif
 #endif
 
@@ -1317,6 +1317,10 @@
 
 #define MAYBE	2	    /* sometimes used for a variant on TRUE */
 
+#ifndef UINT32_T
+typedef UINT32_TYPEDEF UINT32_T;
+#endif
+
 /*
  * Operator IDs; The order must correspond to opchars[] in ops.c!
  */
