[squeak-dev] The Trunk: Collections-dtl.560.mcz

David T. Lewis lewis at mail.msen.com
Fri Jan 17 04:48:59 UTC 2014


Urk.

When I load the updated #workingWithSqueak, then step through this in
a debugger:

  TheWorldMainDockingBar new workingWithSqueak

then I look at the string that is being converted to text with
readStream nextChunkText, it seems that the string contains a bunch
of trailing null characters at the end of the RunArray. This does not
seem right. That said, the original version of RunaArray>>scanFrom:
would have eaten all those nulls without complaining, which is presumably
why it runs in Squeak4.5-13352.

How was the source for this version of #workingWithSqueak created? I am
worried that I might have broken something in the writeScanOn: methods
for TextAttributes that might have led to generating corrupt source
code for the workingWithSqueak method ... I hope not :-(

Thanks,
Dave

On Thu, Jan 16, 2014 at 09:05:31PM -0600, Chris Muller wrote:
> Thanks Dave, unfortunately I still cannot open this revised "Working
> With Squeak".
> 
> File this method into trunk updated with this fix and then try to open
> Help | Welcome Workspaces | Working with Squeak.
> 
> Same works after filing this method into Squeak4.5-13352 from the ftp
> site or even 4.4.
> 
> 
> On Thu, Jan 16, 2014 at 7:05 PM,  <commits at source.squeak.org> wrote:
> > David T. Lewis uploaded a new version of Collections to project The Trunk:
> > http://source.squeak.org/trunk/Collections-dtl.560.mcz
> >
> > ==================== Summary ====================
> >
> > Name: Collections-dtl.560
> > Author: dtl
> > Time: 16 January 2014, 8:05:51.73 pm
> > UUID: 1ef138a7-e60c-4698-9cc4-c2f641e5607f
> > Ancestors: Collections-dtl.559
> >
> > Relax parsing in RunArray>>scanFrom: to meet expectations of RunArrayTest>>testScanFromTrailer. The example string used in that test does not seem to match the implemention of the fileOut serialization, but the test may be right and the implementation wrong. In any case, relax the parsing here to meet the test expectations, and to be more consistent with the original version of the #scanFrom: method that assumed any unexpected charater to be a separator.
> >
> > =============== Diff against Collections-dtl.559 ===============
> >
> > Item was changed:
> >   ----- Method: RunArray class>>scanFrom: (in category 'instance creation') -----
> >   scanFrom: strm
> >         "Read the style section of a fileOut or sources file.  nextChunk has already been done.  We need to return a RunArray of TextAttributes of various kinds.  These are written by the implementors of writeScanOn:"
> >         | runs values attrList char |
> >         (strm peekFor: $( ) ifFalse: [^ nil].
> >         runs := OrderedCollection new.
> >         [strm skipSeparators.
> >          strm peekFor: $)] whileFalse:
> >                 [runs add: (Number readFrom: strm)].
> >         values := OrderedCollection new.        "Value array"
> >         attrList := OrderedCollection new.      "Attributes list"
> >         [(char := strm peek) == nil] whileFalse: [
> > +               (char isSeparator or: [ char = $!! ])
> > +                       ifTrue: [ "n.b. Skip $!! to meet expectations of RunArrayTest>>testScanFromTrailer.
> > +                                       The example string used in that test does not seem to match the implemention
> > +                                       of the fileOut serialization, but the test may be right and the implementation
> > +                                       wrong. In any case, relax the parsing here to meet the test expectations, and to
> > +                                       be more consistent with the original version of this method that assumed any
> > +                                       unexpected charater to be a separator. -dtl Jan 2014"
> > +                               strm next "space, cr do nothing"]
> > -               char isSeparator
> > -                       ifTrue: [strm next "space, cr do nothing"]
> >                         ifFalse: [char == $,
> >                                         ifTrue: [strm next.
> >                                                 values add: attrList asArray.
> >                                                 attrList := OrderedCollection new]
> >                                         ifFalse: [attrList add:  (TextAttribute newFrom: strm)]
> >                                 ]
> >                 ].
> >         values add: attrList asArray.
> >         ^ self runs: runs asArray values: (values copyFrom: 1 to: runs size) asArray
> >   "
> >   RunArray scanFrom: (ReadStream on: '(14 50 312)f1,f1b,f1LInteger +;i')
> >   "!
> >
> >




More information about the Squeak-dev mailing list