#BUGFIX by cg
class: ExternalStream
changed: #flush
always flush - even if unbuffered
(required for stdout/stderr)
--- a/ExternalStream.st Wed Apr 03 15:09:30 2019 +0200
+++ b/ExternalStream.st Wed Apr 03 16:15:40 2019 +0200
@@ -6257,34 +6257,36 @@
|| (__INST(handleType) == @symbol(filePointer))
|| (__INST(handleType) == @symbol(socketFilePointer))
|| (__INST(handleType) == @symbol(pipeFilePointer))) {
- OBJ fp;
- int _buffered = (__INST(buffered) == true);
-
- if ((fp = __INST(handle)) != nil) {
- if (__INST(mode) != @symbol(readonly)) {
- if (_buffered) {
- FILEPOINTER f = __FILEVal(fp);
+ OBJ fp;
+ int _buffered = (__INST(buffered) == true);
+
+ if ((fp = __INST(handle)) != nil) {
+ if (__INST(mode) != @symbol(readonly)) {
+ if (1 /* _buffered */) {
+ FILEPOINTER f = __FILEVal(fp);
#ifdef __win32__
- if ((f == __win32_stdout()) || (f == __win32_stderr())) {
- __win32_fflush(f);
- } else {
- int rslt;
-
- do {
- __threadErrno = 0;
- rslt = __STX_C_CALL1("fflush", fflush, f);
- } while((rslt < 0) && (__threadErrno == EINTR));
- }
+ if ((f == __win32_stdout()) || (f == __win32_stderr())) {
+ __win32_fflush(f);
+ } else {
+ int rslt;
+
+ do {
+ __threadErrno = 0;
+ rslt = __STX_C_CALL1("fflush", fflush, f);
+ } while((rslt < 0) && (__threadErrno == EINTR));
+ }
#else /* ! __win32__ */
- __BEGIN_INTERRUPTABLE__
- FFLUSH(f);
- __END_INTERRUPTABLE__
+ __BEGIN_INTERRUPTABLE__
+ FFLUSH(f);
+ __END_INTERRUPTABLE__
#endif /* ! __win32__ */
- }
- }
- }
+ }
+ }
+ }
}
%}
+
+ "Modified: / 03-04-2019 / 16:15:11 / Claus Gittinger"
!
nextPut:aCharacter