diff --git a/libavcodec/8bps.c b/libavcodec/8bps.c
index 8f0692c4ba874e20f9fb185251700cb7204eb515..ceed13f5b81c621d776ea9c442ee9e8bebf8ac7d 100644
--- a/libavcodec/8bps.c
+++ b/libavcodec/8bps.c
@@ -69,15 +69,16 @@ static int decode_frame(AVCodecContext *avctx, void *data,
     unsigned int px_inc;
     unsigned int planes     = c->planes;
     unsigned char *planemap = c->planemap;
+    int ret;
 
     if (c->pic.data[0])
         avctx->release_buffer(avctx, &c->pic);
 
     c->pic.reference    = 0;
     c->pic.buffer_hints = FF_BUFFER_HINTS_VALID;
-    if (ff_get_buffer(avctx, &c->pic) < 0){
+    if ((ret = ff_get_buffer(avctx, &c->pic)) < 0) {
         av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
-        return -1;
+        return ret;
     }
 
     /* Set data pointer after line lengths */
@@ -101,14 +102,14 @@ static int decode_frame(AVCodecContext *avctx, void *data,
             /* Decode a row of this plane */
             while (dlen > 0) {
                 if (dp + 1 >= buf + buf_size)
-                    return -1;
+                    return AVERROR_INVALIDDATA;
                 if ((count = *dp++) <= 127) {
                     count++;
                     dlen -= count + 1;
                     if (pixptr + count * px_inc > pixptr_end)
                         break;
                     if (dp + count > buf + buf_size)
-                        return -1;
+                        return AVERROR_INVALIDDATA;
                     while (count--) {
                         *pixptr = *dp++;
                         pixptr += px_inc;
@@ -185,7 +186,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
     default:
         av_log(avctx, AV_LOG_ERROR, "Error: Unsupported color depth: %u.\n",
                avctx->bits_per_coded_sample);
-        return -1;
+        return AVERROR_INVALIDDATA;
     }
 
     return 0;