[libav-commits] vf_fps: add more error checks.

Anton Khirnov git at libav.org
Sun Jul 22 09:22:22 CEST 2012


Module: libav
Branch: master
Commit: 043800a96888f1a04732f12316ba477d8f098d3f

Author:    Anton Khirnov <anton at khirnov.net>
Committer: Anton Khirnov <anton at khirnov.net>
Date:      Sun Jul 15 10:07:59 2012 +0200

vf_fps: add more error checks.

---

 libavfilter/vf_fps.c |   19 +++++++++++++++++--
 1 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/libavfilter/vf_fps.c b/libavfilter/vf_fps.c
index bf140f8..d95fef5 100644
--- a/libavfilter/vf_fps.c
+++ b/libavfilter/vf_fps.c
@@ -184,7 +184,10 @@ static int end_frame(AVFilterLink *inlink)
     /* discard frames until we get the first timestamp */
     if (s->pts == AV_NOPTS_VALUE) {
         if (buf->pts != AV_NOPTS_VALUE) {
-            write_to_fifo(s->fifo, buf);
+            ret = write_to_fifo(s->fifo, buf);
+            if (ret < 0)
+                return ret;
+
             s->first_pts = s->pts = buf->pts;
         } else {
             av_log(ctx, AV_LOG_WARNING, "Discarding initial frame(s) with no "
@@ -227,8 +230,20 @@ static int end_frame(AVFilterLink *inlink)
 
         /* duplicate the frame if needed */
         if (!av_fifo_size(s->fifo) && i < delta - 1) {
+            AVFilterBufferRef *dup = avfilter_ref_buffer(buf_out, AV_PERM_READ);
+
             av_log(ctx, AV_LOG_DEBUG, "Duplicating frame.\n");
-            write_to_fifo(s->fifo, avfilter_ref_buffer(buf_out, AV_PERM_READ));
+            if (dup)
+                ret = write_to_fifo(s->fifo, dup);
+            else
+                ret = AVERROR(ENOMEM);
+
+            if (ret < 0) {
+                avfilter_unref_bufferp(&buf_out);
+                avfilter_unref_bufferp(&buf);
+                return ret;
+            }
+
             s->dup++;
         }
 



More information about the libav-commits mailing list