cleanup pic_read

This commit is contained in:
Yuichi Nishiwaki 2015-06-29 02:04:55 +09:00
parent 5138ab4a8c
commit f6a727beb4
1 changed files with 8 additions and 11 deletions

View File

@ -857,21 +857,18 @@ pic_read(pic_state *pic, struct pic_port *port)
{
size_t ai = pic_gc_arena_preserve(pic);
pic_value val;
int c = next(pic, port);
retry:
c = skip(pic, port, c);
if (c == EOF) {
return pic_eof_object();
}
int c;
while ((c = skip(pic, port, next(pic, port))) != EOF) {
val = read_nullable(pic, port, c);
if (pic_invalid_p(val)) {
c = next(pic, port);
if (! pic_invalid_p(val)) {
break;
}
pic_gc_arena_restore(pic, ai);
goto retry;
}
if (c == EOF) {
return pic_eof_object();
}
pic_gc_arena_restore(pic, ai);