Fix memleak on some OSes in case network initialization fails. See
[libav.git] / libavformat / udp.c
index effe699..1730130 100644 (file)
@@ -348,6 +348,9 @@ static int udp_open(URLContext *h, const char *uri, int flags)
 
     is_output = (flags & URL_WRONLY);
 
+    if(!ff_network_init())
+        return AVERROR(EIO);
+
     s = av_mallocz(sizeof(UDPContext));
     if (!s)
         return AVERROR(ENOMEM);
@@ -380,9 +383,6 @@ static int udp_open(URLContext *h, const char *uri, int flags)
         udp_set_remote_url(h, uri);
     }
 
-    if(!ff_network_init())
-        return AVERROR(EIO);
-
     if (s->is_multicast && !(h->flags & URL_WRONLY))
         s->local_port = port;
     udp_fd = udp_socket_create(s, &my_addr, &len);