You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2009/11/26 16:46:08 UTC

svn commit: r884603 - in /commons/sandbox/runtime/trunk/src/main/native/os: unix/pipe.c win32/pipe.c

Author: mturk
Date: Thu Nov 26 15:46:08 2009
New Revision: 884603

URL: http://svn.apache.org/viewvc?rev=884603&view=rev
Log:
Do not leak IOH descriptors

Modified:
    commons/sandbox/runtime/trunk/src/main/native/os/unix/pipe.c
    commons/sandbox/runtime/trunk/src/main/native/os/win32/pipe.c

Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/pipe.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/pipe.c?rev=884603&r1=884602&r2=884603&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/pipe.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/pipe.c Thu Nov 26 15:46:08 2009
@@ -186,7 +186,8 @@
     fo = acr_ioh_open(fp, ACR_DT_FILE, 0, file_cleanup);
     if (fo < 0) {
         rc = ACR_GET_OS_ERROR();
-        goto finally;
+        file_cleanup(fp, ACR_DT_FILE, ACR_IOH_CLEAR);
+        return rc;
     }
     /* Create File Descriptor Object */
     *fdo = ACR_DescriptorCreate(_E, ACR_DT_FILE, fo, NULL,
@@ -201,7 +202,7 @@
 finally:
     if (rc) {
         if (fp)
-            file_cleanup(fp, ACR_DT_FILE, ACR_IOH_CLEAR);
+            acr_ioh_clear(fo);
         else
             close(fd);
     }

Modified: commons/sandbox/runtime/trunk/src/main/native/os/win32/pipe.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/win32/pipe.c?rev=884603&r1=884602&r2=884603&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/win32/pipe.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/win32/pipe.c Thu Nov 26 15:46:08 2009
@@ -396,7 +396,8 @@
     fo = acr_ioh_open(fp, ACR_DT_FILE, 0, file_cleanup);
     if (fo < 0) {
         rc = ACR_GET_OS_ERROR();
-        goto finally;
+        file_cleanup(fp, ACR_DT_FILE, ACR_IOH_CLEAR);
+        return rc;
     }
     /* Create File Descriptor Object */
     *fdo = ACR_DescriptorCreate(_E, ACR_DT_FILE, fo, NULL,
@@ -409,7 +410,7 @@
 
 finally:
     if (rc)
-        file_cleanup(fp, ACR_DT_FILE, ACR_IOH_CLEAR);
+        acr_ioh_clear(fo);
     return rc;
 }