vlc/vlc-2.2 | branch: master | Francois Cartegnie <[email protected]> | Wed Mar 18 12:56:15 2015 +0100| [6735d775de126fc65c13a2e9e334971d0b276821] | committer: Jean-Baptiste Kempf
httplive: leaks on playlist reload/merge (fix #14171) (cherry picked from commit b0e058b561b61404f992433964f82f9646c4863a) Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=6735d775de126fc65c13a2e9e334971d0b276821 --- modules/stream_filter/httplive.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/modules/stream_filter/httplive.c b/modules/stream_filter/httplive.c index d66ee28..72abf15 100644 --- a/modules/stream_filter/httplive.c +++ b/modules/stream_filter/httplive.c @@ -1381,10 +1381,7 @@ static int hls_UpdatePlaylist(stream_t *s, hls_stream_t *hls_new, hls_stream_t * { segment_t *p = segment_GetSegment(hls_new, n); if (p == NULL) - { - vlc_mutex_unlock(&hls_old->lock); - return VLC_EGENERIC; - } + continue; segment_t *segment = segment_Find(hls_old, p->sequence); if (segment) @@ -1426,8 +1423,8 @@ static int hls_UpdatePlaylist(stream_t *s, hls_stream_t *hls_new, hls_stream_t * } free(segment->psz_key_path); segment->psz_key_path = p->psz_key_path ? strdup(p->psz_key_path) : NULL; - segment_Free(p); } + segment_Free(p); vlc_mutex_unlock(&segment->lock); } else @@ -1436,7 +1433,8 @@ static int hls_UpdatePlaylist(stream_t *s, hls_stream_t *hls_new, hls_stream_t * segment_t *l = segment_GetSegment(hls_old, last); if (l == NULL) { vlc_mutex_unlock(&hls_old->lock); - return VLC_EGENERIC; + segment_Free(p); + continue; } if ((l->sequence + 1) != p->sequence) @@ -1459,8 +1457,9 @@ static int hls_UpdatePlaylist(stream_t *s, hls_stream_t *hls_new, hls_stream_t * hls_old->duration = (hls_new->duration == -1) ? hls_old->duration : hls_new->duration; hls_old->b_cache = hls_new->b_cache; vlc_mutex_unlock(&hls_old->lock); - return VLC_SUCCESS; + vlc_array_clear(hls_new->segments); + return VLC_SUCCESS; } static int hls_ReloadPlaylist(stream_t *s) @@ -1508,10 +1507,12 @@ static int hls_ReloadPlaylist(stream_t *s) // New segment available - signal download thread stream_appended = true; + continue; } else if (hls_UpdatePlaylist(s, hls_new, hls_old, &stream_appended) != VLC_SUCCESS) msg_Warn(s, "failed updating HLS stream (id=%d, bandwidth=%"PRIu64")", hls_new->id, hls_new->bandwidth); + hls_Free(hls_new); } vlc_array_destroy(hls_streams); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
