Il 09/10/2012 16:43, Holger Hans Peter Freyther ha scritto:
>> > -  [(s := streams first) atEnd] whileTrue: 
>> > -          [streams size = 1 ifTrue: [^nil].
>> > -          lastStart := startPos.
>> > +        "This is somewhat performance-sensitive, so avoid testing for an
>> > +         empty collection."
>> > +  [(s := streams at: 1) atEnd] whileTrue: 
>> > +          [lastStart := startPos.
>> >            startPos := startPos + curPos.
>> >            curPos := 0.
>> > +                streams size = 1 ifTrue: [last := streams first. ^nil].
> I don't see why it is failing but maybe the test helps.

Yes, this fixes it:

diff --git a/kernel/StreamOps.st b/kernel/StreamOps.st
index 63bea8a..54f82af 100644
--- a/kernel/StreamOps.st
+++ b/kernel/StreamOps.st
@@ -81,9 +81,10 @@ Stream subclass: ConcatenatedStream [
         "This is somewhat performance-sensitive, so avoid testing for an
          empty collection."
        [(s := streams at: 1) atEnd] whileTrue: 
-               [lastStart := startPos.
-               startPos := startPos + curPos.
-               curPos := 0.
+               [curPos > 0 ifTrue: [
+                    lastStart := startPos.
+                   startPos := startPos + curPos.
+                   curPos := 0].
                 streams size = 1 ifTrue: [last := streams first. ^nil].
                last := streams removeFirst].
        ^s

Paolo

_______________________________________________
help-smalltalk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-smalltalk

Reply via email to