diff --git a/src/conio/bitmap_con.c b/src/conio/bitmap_con.c
index df171eafd31ef3a7b26a7e8bd02cfcdeb8d8a018..b41ec9844deaf4d02c1641a3d7cacc5ed56ead5a 100644
--- a/src/conio/bitmap_con.c
+++ b/src/conio/bitmap_con.c
@@ -1530,11 +1530,13 @@ void bitmap_clrscr(void)
 	struct vstat_vmem *vmem_ptr;
 	size_t c = 0;
 	int rows, cols;
-	struct vmem_cell *va = malloc(((cio_textinfo.winright - cio_textinfo.winleft + 1) * (cio_textinfo.winbottom - cio_textinfo.wintop + 1)) * sizeof(struct vmem_cell));
+	struct vmem_cell *va;
 
 	if(!bitmap_initialized)
 		return;
-
+	va = malloc(((cio_textinfo.winright - cio_textinfo.winleft + 1) * (cio_textinfo.winbottom - cio_textinfo.wintop + 1)) * sizeof(struct vmem_cell));
+	if (va == NULL)
+		return;
 	pthread_mutex_lock(&vstatlock);
 	vmem_ptr = get_vmem(&vstat);
 	rows = vstat.rows;
@@ -1545,6 +1547,7 @@ void bitmap_clrscr(void)
 		}
 	}
 	bitmap_draw_vmem(cio_textinfo.winleft, cio_textinfo.wintop, cio_textinfo.winright, cio_textinfo.winbottom, va);
+	free(va);
 	release_vmem(vmem_ptr);
 	pthread_mutex_unlock(&vstatlock);
 }