Yes, on Pharo, #next (and #peek or #peekFor:) all return nil when #atEnd. It is the way it is (I am personally for stricter semantics), but that fact is certainly used in code all allround the place.
> On 01 Jul 2015, at 15:06, jtuc...@objektfabrik.de wrote: > > Hi Sven, > > I didn't test on Pharo. But I remember seeing differences in the way Pharo > and VAST react to reads beyond the end of a Stream. > Not sure, but this could have been in NeoCSV context two or three years ago. > > So it is very likely I was bitten by platform differences. > > Thanks for answering. > > Joachim > > Am 01.07.15 um 14:05 schrieb Sven Van Caekenberghe: >> Hi Joachim, >> >> First, thanks for the feedback. >> >> Second, since you are on a different platform, that might be a factor. >> >> Did you test your problem on Pharo itself ? >> >> Because there are already unit tests specifically for the case you describe: >> >> #testEmptyLastFieldUnquoted >> #testEmptyLastFieldQuoted >> >> These obviously pass for Pharo, do they pass for you ? >> >> Maybe your problem case is slightly different though ? >> >> Sven >> >>> On 01 Jul 2015, at 13:40, jtuc...@objektfabrik.de wrote: >>> >>> Hi, >>> >>> I've tried porting SvenVanCaekenberghe.20 and see the same problems in this >>> version. IN addition to the fix already mentioned, I also had to change >>> readSeparator: >>> >>> readSeparator >>> >>> ^self atEnd ifFalse: [self peekFor: separator] >>> >>> As far as I can tell by now, this fixes the problem at hand. Any ideas if >>> this is a safe fix? >>> >>> Joachim >>> >>> >>> Am 01.07.15 um 12:35 schrieb jtuc...@objektfabrik.de: >>>> Hi there, >>>> >>>> I am on VA Smalltalk and therefor using an older version of NeoCSV >>>> (SvenVanCaekenberghe.14). I found a bug in this old version that is >>>> somewhat special. >>>> >>>> It seems NeoCSV cannot handle the situation where the very last field is >>>> just empty AND if there is no trailing CRLF at the end of the file. >>>> Somethinng like this: >>>> >>>> SecondLastColumnValue;;<EOF> >>>> >>>> In that case, readField fails because it tries to do a readQuotedField or >>>> readUnquotedField, both of which try to read beyond EOF. >>>> >>>> So I changed readField to this: >>>> >>>> readField >>>> >>>> ^self atEnd "In case the very last field of a file is empty, like >>>> '45;56;;'" >>>> ifTrue: [''] >>>> ifFalse: [self peekQuote ifTrue: [self readQuotedField] ifFalse: >>>> [self readUnquotedField]] >>>> >>>> and all seems fine so far. >>>> >>>> Side note: My original file has a trailing CrLf but if I upload it via a >>>> browser to a Seaside Server, the Browser cuts off the trailing CrLf (I can >>>> see this in the Browser's Network debugging tools - both in IE and FF) - >>>> so it seems NeoCSV has to be ready for this situation. >>>> >>>> Joachim >>>> >>>> >>> >>> -- >>> ----------------------------------------------------------------------- >>> Objektfabrik Joachim Tuchel mailto:jtuc...@objektfabrik.de >>> Fliederweg 1 http://www.objektfabrik.de >>> D-71640 Ludwigsburg http://joachimtuchel.wordpress.com >>> Telefon: +49 7141 56 10 86 0 Fax: +49 7141 56 10 86 1 >>> >>> >> >> > > > -- > ----------------------------------------------------------------------- > Objektfabrik Joachim Tuchel mailto:jtuc...@objektfabrik.de > Fliederweg 1 http://www.objektfabrik.de > D-71640 Ludwigsburg http://joachimtuchel.wordpress.com > Telefon: +49 7141 56 10 86 0 Fax: +49 7141 56 10 86 1 > >