changed:
authorStefan Vogel <sv@exept.de>
Thu, 04 Feb 2010 18:45:38 +0100
changeset 12696 52b0ce2f44ca
parent 12695 14b7044c2e4a
child 12697 c70a0ec49f43
changed: #connectTo:withMode: #setFileHandle:mode: Clean up handle if _open_osfhandle fails.
ExternalStream.st
--- a/ExternalStream.st	Thu Feb 04 18:34:50 2010 +0100
+++ b/ExternalStream.st	Thu Feb 04 18:45:38 2010 +0100
@@ -4342,6 +4342,7 @@
                 }
                 error = __mkSmallInteger(__threadErrno);
                 __stxWrapApiLeaveCritical();
+                CloseHandle((HANDLE)__externalAddressVal(aFileDescriptor));
                 goto out;
             }
         }
@@ -4519,6 +4520,11 @@
     if (__isExternalAddressLike(anIntegerOrExternalAddress) ) {
         HANDLE __fileHandle = (HANDLE)__externalAddressVal(anIntegerOrExternalAddress);
         fd = _open_osfhandle((long)__fileHandle, O_BINARY);      /* should we handle readonly, append or text mode? */
+        if (fd < 0) {
+            __stxWrapApiLeaveCritical();
+            CloseHandle(__fileHandle);
+            goto err;
+        }
     } else
 #endif
     if (__isSmallInteger(anIntegerOrExternalAddress)) {
@@ -5683,11 +5689,11 @@
 !ExternalStream class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.336 2010-02-04 16:12:32 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.337 2010-02-04 17:45:38 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.336 2010-02-04 16:12:32 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ExternalStream.st,v 1.337 2010-02-04 17:45:38 stefan Exp $'
 ! !
 
 ExternalStream initialize!