Move malloc() down until after all initializations, so that the resource is
authorRonald S. Bultje <rsbultje@gmail.com>
Sat, 23 Aug 2008 18:46:30 +0000 (18:46 +0000)
committerRonald S. Bultje <rsbultje@gmail.com>
Sat, 23 Aug 2008 18:46:30 +0000 (18:46 +0000)
only allocated if initialization worked. This means that on failure, we
don't have to deallocate it.

Originally committed as revision 14924 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/tcp.c

index 9191960..470d0ce 100644 (file)
@@ -49,12 +49,6 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
     if (strcmp(proto,"tcp")) goto fail;
     if ((q = strchr(hostname,'@'))) { strcpy(tmp,q+1); strcpy(hostname,tmp); }
 
-    s = av_malloc(sizeof(TCPContext));
-    if (!s)
-        return AVERROR(ENOMEM);
-    h->priv_data = s;
-    h->is_streamed = 1;
-
     if (port <= 0 || port >= 65536)
         goto fail;
 
@@ -100,6 +94,11 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
         if (ret != 0)
             goto fail;
     }
+    s = av_malloc(sizeof(TCPContext));
+    if (!s)
+        return AVERROR(ENOMEM);
+    h->priv_data = s;
+    h->is_streamed = 1;
     s->fd = fd;
     return 0;
 
@@ -108,7 +107,6 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
  fail1:
     if (fd >= 0)
         closesocket(fd);
-    av_free(s);
     return ret;
 }