stream_wrap: fix memory leak on early return
authorBrian White <mscdex@mscdex.net>
Tue, 7 May 2013 22:01:42 +0000 (18:01 -0400)
committerBen Noordhuis <info@bnoordhuis.nl>
Tue, 7 May 2013 22:05:54 +0000 (15:05 -0700)
src/stream_wrap.cc

index f1d8af1..04b0881 100644 (file)
@@ -538,9 +538,6 @@ Handle<Value> StreamWrap::Writev(const Arguments& args) {
   uv_buf_t bufs_[16];
   uv_buf_t* bufs = bufs_;
 
-  if (ARRAY_SIZE(bufs_) < count)
-    bufs = new uv_buf_t[count];
-
   // Determine storage size first
   size_t storage_size = 0;
   for (size_t i = 0; i < count; i++) {
@@ -578,6 +575,9 @@ Handle<Value> StreamWrap::Writev(const Arguments& args) {
     return scope.Close(v8::Null(node_isolate));
   }
 
+  if (ARRAY_SIZE(bufs_) < count)
+    bufs = new uv_buf_t[count];
+
   storage_size += sizeof(WriteWrap);
   char* storage = new char[storage_size];
   WriteWrap* req_wrap = new (storage) WriteWrap();