Checking return values of av_malloc(z) and report an error in case.
authorTobias Bindhammer <tobias.bindhammer@uni-ulm.de>
Tue, 31 Aug 2010 07:14:47 +0000 (07:14 +0000)
committerTobias Bindhammer <tobias.bindhammer@uni-ulm.de>
Tue, 31 Aug 2010 07:14:47 +0000 (07:14 +0000)
Originally committed as revision 25003 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/a64multienc.c

index 4571f05..5e127e1 100644 (file)
@@ -192,14 +192,21 @@ static av_cold int a64multi_init_encoder(AVCodecContext *avctx)
 
     c->mc_frame_counter = 0;
     c->mc_use_5col      = avctx->codec->id == CODEC_ID_A64_MULTI5;
-    c->mc_meta_charset  = av_malloc (32000 * c->mc_lifetime * sizeof(int));
-    c->mc_best_cb       = av_malloc (CHARSET_CHARS * 32 * sizeof(int));
-    c->mc_charmap       = av_mallocz(1000 * c->mc_lifetime * sizeof(int));
-    c->mc_colram        = av_mallocz(CHARSET_CHARS * sizeof(uint8_t));
-    c->mc_charset       = av_malloc (0x800 * (INTERLACED+1) * sizeof(uint8_t));
+
+    if(!(c->mc_meta_charset  = av_malloc (32000 * c->mc_lifetime * sizeof(int))) ||
+       !(c->mc_best_cb       = av_malloc (CHARSET_CHARS * 32 * sizeof(int)))     ||
+       !(c->mc_charmap       = av_mallocz(1000 * c->mc_lifetime * sizeof(int)))  ||
+       !(c->mc_colram        = av_mallocz(CHARSET_CHARS * sizeof(uint8_t)))      ||
+       !(c->mc_charset       = av_malloc (0x800 * (INTERLACED+1) * sizeof(uint8_t)))) {
+        av_log(avctx, AV_LOG_ERROR, "Failed to allocate buffer memory.\n");
+        return AVERROR(ENOMEM);
+    }
 
     /* set up extradata */
-    avctx->extradata      = av_mallocz(8 * 4 + FF_INPUT_BUFFER_PADDING_SIZE);
+    if(!(avctx->extradata = av_mallocz(8 * 4 + FF_INPUT_BUFFER_PADDING_SIZE))) {
+        av_log(avctx, AV_LOG_ERROR, "Failed to allocate memory for extradata.\n");
+        return AVERROR(ENOMEM);
+    }
     avctx->extradata_size = 8 * 4;
     AV_WB32(avctx->extradata, c->mc_lifetime);
     AV_WB32(avctx->extradata+16, INTERLACED);