On Tue, 29 Sep 2015, Ganesh Ajjanagadde wrote:

SDL_CreateMutex and SDL_CreateCond can fail:
https://wiki.libsdl.org/SDL_CreateMutex.
This patch makes handling more robust in one instance.

Signed-off-by: Ganesh Ajjanagadde <gajjanaga...@gmail.com>
---
ffplay.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/ffplay.c b/ffplay.c
index 3c2407f..9466996 100644
--- a/ffplay.c
+++ b/ffplay.c
@@ -451,12 +451,21 @@ static int packet_queue_put_nullpacket(PacketQueue *q, 
int stream_index)
}

/* packet queue handling */
-static void packet_queue_init(PacketQueue *q)
+static int packet_queue_init(PacketQueue *q)
{
    memset(q, 0, sizeof(PacketQueue));
    q->mutex = SDL_CreateMutex();
+    if (!q->mutex) {
+        av_log(q, AV_LOG_FATAL, "SDL_CreateMutex(): %s\n", SDL_GetError());
+        return AVERROR(ENOMEM);
+    }
    q->cond = SDL_CreateCond();
+    if (!q->cond) {
+        av_log(q, AV_LOG_FATAL, "SDL_CreateCond(): %s\n", SDL_GetError());
+        return AVERROR(ENOMEM);
+    }
    q->abort_request = 1;
+    return 0;
}

static void packet_queue_flush(PacketQueue *q)
@@ -3136,9 +3145,9 @@ static VideoState *stream_open(const char *filename, 
AVInputFormat *iformat)
    if (frame_queue_init(&is->sampq, &is->audioq, SAMPLE_QUEUE_SIZE, 1) < 0)
        goto fail;

-    packet_queue_init(&is->videoq);
-    packet_queue_init(&is->audioq);
-    packet_queue_init(&is->subtitleq);
+    if (packet_queue_init(&is->videoq) || packet_queue_init(&is->audioq)
+        || packet_queue_init(&is->subtitleq))
+        goto fail;

Only cosmetics, but maybe you could use ffmpeg-api-like less-than-zero error checking with common indentation:

if (packet_queue_init() < 0 ||
    packet_queue_init() < 0 ||
    packet_queue_init() < 0)

Regards,
Marton
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to