diff --git a/libavcodec/bmp.c b/libavcodec/bmp.c
index e621c68ea9778615daa2d71a722a18be3307dd59..5792142bade35cb8c0d25dc64a5f20c37be35485 100644
--- a/libavcodec/bmp.c
+++ b/libavcodec/bmp.c
@@ -158,6 +158,9 @@ static int bmp_decode_frame(AVCodecContext *avctx,
         return -1;
     }
 
+    if(p->data[0])
+        avctx->release_buffer(avctx, p);
+
     p->reference = 0;
     if(avctx->get_buffer(avctx, p) < 0){
         av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");