A 'read' function may only read as many bytes as the size of the
buffer passed into it, but the caller didn't check, which made an
actual violation of this invariant hard to diagnose.
size_t n;
lex_source_expand__ (src);
head_ofs = src->head - src->tail;
size_t n;
lex_source_expand__ (src);
head_ofs = src->head - src->tail;
+ space = src->allocated - head_ofs;
n = src->reader->class->read (src->reader, &src->buffer[head_ofs],
n = src->reader->class->read (src->reader, &src->buffer[head_ofs],
- src->allocated - head_ofs,
segmenter_get_prompt (&src->segmenter));
segmenter_get_prompt (&src->segmenter));
if (n == 0)
{
/* End of input.
if (n == 0)
{
/* End of input.