io.streams.sequence: bounds check sequence-read-until.

db4
John Benediktsson 2014-02-25 07:52:07 -08:00
parent 0b04d3f279
commit ee9ead89f8
2 changed files with 6 additions and 4 deletions

View File

@ -15,9 +15,7 @@ M: string-reader stream-read-unsafe
[ dup string? [ "not a string" throw ] unless ]
[ sequence-read-unsafe ] tri* ;
M: string-reader stream-read1 sequence-read1 ;
M: string-reader stream-read-until
dup >sequence-stream< bounds-check?
[ sequence-read-until ] [ 2drop f f ] if ;
M: string-reader stream-read-until sequence-read-until ;
M: string-reader stream-readln
dup >sequence-stream< bounds-check? [
"\r\n" over sequence-read-until CHAR: \r eq? [

View File

@ -35,11 +35,15 @@ SLOT: i
[ member-eq? ] curry [ find-from swap ] curry 2keep
pick [ drop - ] [ length swap - nip ] if ; inline
: sequence-read-until ( seps stream -- seq sep/f )
: (sequence-read-until) ( seps stream -- seq sep/f )
[ find-separator ] keep
[ [ (sequence-read-unsafe) ] (read-into-new) ]
[ [ 1 + ] change-i drop ] bi swap ; inline
: sequence-read-until ( seps stream -- seq sep/f )
dup >sequence-stream< bounds-check?
[ (sequence-read-until) ] [ 2drop f f ] if ; inline
! Writers
M: growable dispose drop ;