diff --git a/src/window.c b/src/window.c
index fd732f2..6e02caa 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1065,7 +1065,7 @@
     if (curfrp->fr_parent == NULL || curfrp->fr_parent->fr_layout != layout)
     {
 	/* Need to create a new frame in the tree to make a branch. */
-	frp = (frame_T *)alloc_clear((unsigned)sizeof(frame_T));
+	frp = (frame_T *)alloc_clear(sizeof(frame_T));
 	*frp = *curfrp;
 	curfrp->fr_layout = layout;
 	frp->fr_parent = curfrp;
@@ -3549,7 +3549,7 @@
     static void
 new_frame(win_T *wp)
 {
-    frame_T *frp = (frame_T *)alloc_clear((unsigned)sizeof(frame_T));
+    frame_T *frp = (frame_T *)alloc_clear(sizeof(frame_T));
 
     wp->w_frame = frp;
     if (frp != NULL)
@@ -3584,7 +3584,7 @@
 # endif
 
 
-    tp = (tabpage_T *)alloc_clear((unsigned)sizeof(tabpage_T));
+    tp = (tabpage_T *)alloc_clear(sizeof(tabpage_T));
     if (tp == NULL)
 	return NULL;
 
@@ -4597,7 +4597,7 @@
     /*
      * allocate window structure and linesizes arrays
      */
-    new_wp = (win_T *)alloc_clear((unsigned)sizeof(win_T));
+    new_wp = (win_T *)alloc_clear(sizeof(win_T));
     if (new_wp == NULL)
 	return NULL;
 
@@ -4898,7 +4898,7 @@
 win_alloc_lines(win_T *wp)
 {
     wp->w_lines_valid = 0;
-    wp->w_lines = (wline_T *)alloc_clear((unsigned)(Rows * sizeof(wline_T)));
+    wp->w_lines = (wline_T *)alloc_clear(Rows * sizeof(wline_T));
     if (wp->w_lines == NULL)
 	return FAIL;
     return OK;
@@ -6280,7 +6280,7 @@
     static void
 make_snapshot_rec(frame_T *fr, frame_T **frp)
 {
-    *frp = (frame_T *)alloc_clear((unsigned)sizeof(frame_T));
+    *frp = (frame_T *)alloc_clear(sizeof(frame_T));
     if (*frp == NULL)
 	return;
     (*frp)->fr_layout = fr->fr_layout;
