[FFmpeg-cvslog] gifdec: use av_fast_malloc()

Paul B Mahol git at videolan.org
Sat Dec 1 11:57:08 CET 2012


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Sat Dec  1 10:53:22 2012 +0000| [2152b60f39d5e23a9d11e120b3eb2b6b66a51ba8] | committer: Paul B Mahol

gifdec: use av_fast_malloc()

Signed-off-by: Paul B Mahol <onemda at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2152b60f39d5e23a9d11e120b3eb2b6b66a51ba8
---

 libavcodec/gifdec.c |   13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/libavcodec/gifdec.c b/libavcodec/gifdec.c
index 63a8788..dd4bca2 100644
--- a/libavcodec/gifdec.c
+++ b/libavcodec/gifdec.c
@@ -50,6 +50,7 @@ typedef struct GifState {
     /* intermediate buffer for storing color indices
      * obtained from lzw-encoded data stream */
     uint8_t *idx_line;
+    int idx_line_size;
 
     /* after the frame is displayed, the disposal method is used */
     int gce_prev_disposal;
@@ -60,6 +61,7 @@ typedef struct GifState {
      * drawn on the canvas or background color that
      * should be used upon disposal */
     uint32_t * stored_img;
+    int stored_img_size;
     int stored_bg_color;
 
     /* LZW compatible decoder */
@@ -205,12 +207,9 @@ static int gif_read_image(GifState *s)
             else
                 s->stored_bg_color = s->bg_color;
         } else if (s->gce_disposal == GCE_DISPOSAL_RESTORE) {
-            if (!s->stored_img) {
-                s->stored_img = av_malloc(s->picture.linesize[0] * s->picture.height);
-
-                if (!s->stored_img)
-                    return AVERROR(ENOMEM);
-            }
+            av_fast_malloc(&s->stored_img, &s->stored_img_size, s->picture.linesize[0] * s->picture.height);
+            if (!s->stored_img)
+                return AVERROR(ENOMEM);
 
             gif_copy_img_rect((uint32_t *)s->picture.data[0], s->stored_img,
                 s->picture.linesize[0] / sizeof(uint32_t), left, top, width, height);
@@ -379,7 +378,7 @@ static int gif_read_header1(GifState *s)
         return AVERROR_INVALIDDATA;
     }
 
-    s->idx_line = av_malloc(s->screen_width);
+    av_fast_malloc(&s->idx_line, &s->idx_line_size, s->screen_width);
     if (!s->idx_line)
         return AVERROR(ENOMEM);
 



More information about the ffmpeg-cvslog mailing list