diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c
index c5cf126e89fce1167a04f5c548ac0e929020c757..59639cb6b3fdbd42100646708a5745f00674f65b 100644
--- a/src/conio/sdl_con.c
+++ b/src/conio/sdl_con.c
@@ -1248,6 +1248,8 @@ int sdl_video_event_thread(void *data)
 								pthread_mutex_lock(&vstatlock);
 								rectspace=vstat.cols*vstat.rows+vstat.cols;
 								rectsused=0;
+								if(upd_rects)
+									free(upd_rects);
 								upd_rects=(SDL_Rect *)malloc(sizeof(SDL_Rect)*rectspace);
 								if(upd_rects==NULL) {
 									pthread_mutex_unlock(&vstatlock);