8bps: return meaningful error codes.
This commit is contained in:
		
							parent
							
								
									f7d15d2f42
								
							
						
					
					
						commit
						313da47aa1
					
				@ -69,15 +69,16 @@ static int decode_frame(AVCodecContext *avctx, void *data,
 | 
				
			|||||||
    unsigned int px_inc;
 | 
					    unsigned int px_inc;
 | 
				
			||||||
    unsigned int planes     = c->planes;
 | 
					    unsigned int planes     = c->planes;
 | 
				
			||||||
    unsigned char *planemap = c->planemap;
 | 
					    unsigned char *planemap = c->planemap;
 | 
				
			||||||
 | 
					    int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (c->pic.data[0])
 | 
					    if (c->pic.data[0])
 | 
				
			||||||
        avctx->release_buffer(avctx, &c->pic);
 | 
					        avctx->release_buffer(avctx, &c->pic);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    c->pic.reference    = 0;
 | 
					    c->pic.reference    = 0;
 | 
				
			||||||
    c->pic.buffer_hints = FF_BUFFER_HINTS_VALID;
 | 
					    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");
 | 
					        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
 | 
				
			||||||
        return -1;
 | 
					        return ret;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Set data pointer after line lengths */
 | 
					    /* Set data pointer after line lengths */
 | 
				
			||||||
@ -101,14 +102,14 @@ static int decode_frame(AVCodecContext *avctx, void *data,
 | 
				
			|||||||
            /* Decode a row of this plane */
 | 
					            /* Decode a row of this plane */
 | 
				
			||||||
            while (dlen > 0) {
 | 
					            while (dlen > 0) {
 | 
				
			||||||
                if (dp + 1 >= buf + buf_size)
 | 
					                if (dp + 1 >= buf + buf_size)
 | 
				
			||||||
                    return -1;
 | 
					                    return AVERROR_INVALIDDATA;
 | 
				
			||||||
                if ((count = *dp++) <= 127) {
 | 
					                if ((count = *dp++) <= 127) {
 | 
				
			||||||
                    count++;
 | 
					                    count++;
 | 
				
			||||||
                    dlen -= count + 1;
 | 
					                    dlen -= count + 1;
 | 
				
			||||||
                    if (pixptr + count * px_inc > pixptr_end)
 | 
					                    if (pixptr + count * px_inc > pixptr_end)
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    if (dp + count > buf + buf_size)
 | 
					                    if (dp + count > buf + buf_size)
 | 
				
			||||||
                        return -1;
 | 
					                        return AVERROR_INVALIDDATA;
 | 
				
			||||||
                    while (count--) {
 | 
					                    while (count--) {
 | 
				
			||||||
                        *pixptr = *dp++;
 | 
					                        *pixptr = *dp++;
 | 
				
			||||||
                        pixptr += px_inc;
 | 
					                        pixptr += px_inc;
 | 
				
			||||||
@ -185,7 +186,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
 | 
				
			|||||||
    default:
 | 
					    default:
 | 
				
			||||||
        av_log(avctx, AV_LOG_ERROR, "Error: Unsupported color depth: %u.\n",
 | 
					        av_log(avctx, AV_LOG_ERROR, "Error: Unsupported color depth: %u.\n",
 | 
				
			||||||
               avctx->bits_per_coded_sample);
 | 
					               avctx->bits_per_coded_sample);
 | 
				
			||||||
        return -1;
 | 
					        return AVERROR_INVALIDDATA;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user