changed:
#connectTo:withMode:
#setFileHandle:mode:
Clean up handle if _open_osfhandle fails.
--- 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!