Module: libav
Branch: master
Commit: 5263f464db5f2df74ddf712f6d1221b24475fa8e

Author:    Luca Barbato <[email protected]>
Committer: Luca Barbato <[email protected]>
Date:      Mon Feb 20 02:11:58 2017 +0100

rtsp: Lazily allocate the pollfd array

And use av_malloc_array.

---

 libavformat/rtsp.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index e4cbae4..4ff12c6 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -662,7 +662,6 @@ static void sdp_parse_line(AVFormatContext *s, 
SDPParseState *s1,
 
 int ff_sdp_parse(AVFormatContext *s, const char *content)
 {
-    RTSPState *rt = s->priv_data;
     const char *p;
     int letter, i;
     /* Some SDP lines, particularly for Realmedia or ASF RTSP streams,
@@ -709,8 +708,6 @@ int ff_sdp_parse(AVFormatContext *s, const char *content)
         av_free(s1->default_exclude_source_addrs[i]);
     av_freep(&s1->default_exclude_source_addrs);
 
-    rt->p = av_malloc(sizeof(struct pollfd)*2*(rt->nb_rtsp_streams+1));
-    if (!rt->p) return AVERROR(ENOMEM);
     return 0;
 }
 #endif /* CONFIG_RTPDEC */
@@ -1920,6 +1917,12 @@ static int udp_read_packet(AVFormatContext *s, 
RTSPStream **prtsp_st,
     struct pollfd *p = rt->p;
     int *fds = NULL, fdsnum, fdsidx;
 
+    if (!p) {
+        p = rt->p = av_malloc_array(2 * (rt->nb_rtsp_streams + 1), 
sizeof(struct pollfd));
+        if (!p)
+            return AVERROR(ENOMEM);
+    }
+
     if (rt->rtsp_hd) {
         tcp_fd = ffurl_get_file_handle(rt->rtsp_hd);
         p[max_p].fd = tcp_fd;

_______________________________________________
libav-commits mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to