Avoids possible null pointer dereferences on oom. Fixes ticket #2727.tags/n2.0
@@ -248,9 +248,12 @@ static void rv30_loop_filter(RV34DecContext *r, int row) | |||||
static av_cold int rv30_decode_init(AVCodecContext *avctx) | static av_cold int rv30_decode_init(AVCodecContext *avctx) | ||||
{ | { | ||||
RV34DecContext *r = avctx->priv_data; | RV34DecContext *r = avctx->priv_data; | ||||
int ret; | |||||
r->rv30 = 1; | r->rv30 = 1; | ||||
ff_rv34_decode_init(avctx); | |||||
ret = ff_rv34_decode_init(avctx); | |||||
if (ret < 0) | |||||
return ret; | |||||
if(avctx->extradata_size < 2){ | if(avctx->extradata_size < 2){ | ||||
av_log(avctx, AV_LOG_ERROR, "Extradata is too small.\n"); | av_log(avctx, AV_LOG_ERROR, "Extradata is too small.\n"); | ||||
return -1; | return -1; | ||||
@@ -547,9 +547,12 @@ static void rv40_loop_filter(RV34DecContext *r, int row) | |||||
static av_cold int rv40_decode_init(AVCodecContext *avctx) | static av_cold int rv40_decode_init(AVCodecContext *avctx) | ||||
{ | { | ||||
RV34DecContext *r = avctx->priv_data; | RV34DecContext *r = avctx->priv_data; | ||||
int ret; | |||||
r->rv30 = 0; | r->rv30 = 0; | ||||
ff_rv34_decode_init(avctx); | |||||
ret = ff_rv34_decode_init(avctx); | |||||
if (ret < 0) | |||||
return ret; | |||||
if(!aic_top_vlc.bits) | if(!aic_top_vlc.bits) | ||||
rv40_init_tables(); | rv40_init_tables(); | ||||
r->parse_slice_header = rv40_parse_slice_header; | r->parse_slice_header = rv40_parse_slice_header; | ||||