make eoc also check feof on STREAM_TYPE_FILE

This commit is contained in:
2025-08-29 20:03:43 +01:00
parent b403368d11
commit fadbbd8927

View File

@@ -101,7 +101,8 @@ bool stream_eoc(stream_t *stream)
case STREAM_TYPE_STRING: case STREAM_TYPE_STRING:
return stream->position >= stream->string.size; return stream->position >= stream->string.size;
case STREAM_TYPE_FILE: case STREAM_TYPE_FILE:
return stream->position >= stream->pipe.cache.size; return feof(stream->pipe.file) &&
stream->position >= stream->pipe.cache.size;
default: default:
FAIL("Unreachable"); FAIL("Unreachable");
return 0; return 0;
@@ -144,7 +145,7 @@ char stream_peek(stream_t *stream)
{ {
// If we've reached end of stream, and end of content, there's really nothing // If we've reached end of stream, and end of content, there's really nothing
// to check here. // to check here.
if (stream_eoc(stream) && stream_eos(stream)) if (stream_eoc(stream))
return '\0'; return '\0';
switch (stream->type) switch (stream->type)
@@ -188,7 +189,7 @@ bool stream_seek(stream_t *stream, i64 offset)
bool stream_seek_forward(stream_t *stream, u64 offset) bool stream_seek_forward(stream_t *stream, u64 offset)
{ {
if (stream_eos(stream) && stream_eoc(stream)) if (stream_eoc(stream))
return false; return false;
switch (stream->type) switch (stream->type)
@@ -242,7 +243,7 @@ bool stream_seek_backward(stream_t *stream, u64 offset)
sv_t stream_substr(stream_t *stream, u64 size) sv_t stream_substr(stream_t *stream, u64 size)
{ {
if (stream_eos(stream) && stream_eoc(stream)) if (stream_eoc(stream))
return SV(NULL, 0); return SV(NULL, 0);
// TODO: this is kinda disgusting, any better way of doing this // TODO: this is kinda disgusting, any better way of doing this