diff --git a/libavcodec/xl.c b/libavcodec/xl.c
index 1cadeab5612d178a282401247dc4366a72a66daa..ab45a5e35a0a5e27c32942fc7099c0d9410a72f3 100644
--- a/libavcodec/xl.c
+++ b/libavcodec/xl.c
@@ -49,7 +49,7 @@ static int decode_frame(AVCodecContext *avctx,
     VideoXLContext * const a = avctx->priv_data;
     AVFrame * const p = &a->pic;
     uint8_t *Y, *U, *V;
-    int i, j;
+    int i, j, ret;
     int stride;
     uint32_t val;
     int y0, y1, y2, y3 = 0, c0 = 0, c1 = 0;
@@ -58,9 +58,9 @@ static int decode_frame(AVCodecContext *avctx,
         avctx->release_buffer(avctx, p);
 
     p->reference = 0;
-    if(ff_get_buffer(avctx, p) < 0){
+    if ((ret = ff_get_buffer(avctx, p)) < 0){
         av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
-        return -1;
+        return ret;
     }
     p->pict_type= AV_PICTURE_TYPE_I;
     p->key_frame= 1;