From d975c90d3419e6ef9e2a37ee748e0f1cf8e92c52 Mon Sep 17 00:00:00 2001 From: Jacek Jendrzej Date: Sun, 14 Jul 2019 19:04:24 +0200 Subject: [PATCH] fix segfault on strdup --- libeplayer3-arm/output/linuxdvb_mipsel.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libeplayer3-arm/output/linuxdvb_mipsel.c b/libeplayer3-arm/output/linuxdvb_mipsel.c index 13d647c..e289ff1 100644 --- a/libeplayer3-arm/output/linuxdvb_mipsel.c +++ b/libeplayer3-arm/output/linuxdvb_mipsel.c @@ -822,6 +822,8 @@ static int Write(Context_t *context, void *_out) if (video) { + getLinuxDVBMutex(); + char *Encoding = NULL; context->manager->video->Command(context, MANAGER_GETENCODING, &Encoding); @@ -915,9 +917,13 @@ static int Write(Context_t *context, void *_out) } free(Encoding); + + releaseLinuxDVBMutex(); } else if (audio) { + getLinuxDVBMutex(); + char *Encoding = NULL; context->manager->audio->Command(context, MANAGER_GETENCODING, &Encoding); @@ -965,6 +971,8 @@ static int Write(Context_t *context, void *_out) } free(Encoding); + + releaseLinuxDVBMutex(); } return ret; @@ -974,6 +982,9 @@ static int reset(Context_t *context) { int ret = cERR_LINUXDVB_NO_ERROR; Writer_t *writer; + + getLinuxDVBMutex(); + char *Encoding = NULL; context->manager->video->Command(context, MANAGER_GETENCODING, &Encoding); @@ -1008,9 +1019,12 @@ static int reset(Context_t *context) free(Encoding); + releaseLinuxDVBMutex(); + if (isBufferedOutput) LinuxDvbBuffFlush(context); + return ret; }