SDL_Surface refcount: fix memory leak when blitting between stack'ed surfaces
(see bug 5226)
diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c
index 5539465..3d505cc 100644
--- a/src/video/SDL_surface.c
+++ b/src/video/SDL_surface.c
@@ -1259,6 +1259,7 @@
     SDL_BlitMap src_blitmap, dst_blitmap;
     SDL_Rect rect;
     void *nonconst_src = (void *) src;
+    int ret;
 
     /* Check to make sure we are blitting somewhere, so we don't crash */
     if (!dst) {
@@ -1311,7 +1312,12 @@
     rect.y = 0;
     rect.w = width;
     rect.h = height;
-    return SDL_LowerBlit(&src_surface, &rect, &dst_surface, &rect);
+    ret = SDL_LowerBlit(&src_surface, &rect, &dst_surface, &rect);
+
+    /* Free blitmap reference, after blitting between stack'ed surfaces */
+    SDL_InvalidateMap(src_surface.map);
+
+    return ret;
 }
 
 /*