On Wed, 13 Jun 2012, Guillermo Polito wrote:
soo, what do I do? :D
Streaming into an OrderedCollection is unnecessary, because OrderedCollection is already a stream-like object. If I were implementing Smalltalk now, I would probably add the stream protocol to it (#nextPut:, #nextPutAll:, etc). A simple fix to your problem is to replace the line grownCollection := collection class new: newSize. with grownCollection := collection class ofSize: newSize. in WriteStream >> #growTo: (note that I didn't check current Pharo code, so this might be different there). Levente
On 6/13/12, Camillo Bruni <camillobruni@gmail.com> wrote:
yup I know that :D And I provided a fix on e year ago, that got lost in a big refactoring... - I added an explicit #streamSpecies on the Collection classes. - By default it returns the same class - on Set / OrderedCollection / Symbol it returns the mutable types (LinkedList as well I think) - overwrote #streamContents: to convert from the #streamSpecies type back to the original class
On 2012-06-13, at 14:56, Guillermo Polito wrote:
Hi guys!
I'm chasing a bug that appeared in glorp under pharo 1.4. Now, the bug is due to some behavior changed in OrderedCollection I think. Look at this piece of code:
oc := OrderedCollection new. ws := oc writeStream.
"this explodes" ws nextPutAll: (OrderedCollection with: 1 with: 2 with: 3).
"this works" ws nextPutAll: {1.2.3}
And I'm puzzled, why should one work and the other not from the pov of the user? And how should I replace that behavior if it's my bug?
putting an asArray for each nextPutAll: does not look good for me... :S
Tx, Guille