php_stream_memory_data *ms = (php_stream_memory_data*)stream->abstract;
assert(ms != NULL);
- if (ms->fpos + count > ms->fsize) {
+ if (ms->fpos + count >= ms->fsize) {
count = ms->fsize - ms->fpos;
+ stream->eof = 1;
}
if (count) {
assert(ms->data!= NULL);
assert(buf!= NULL);
memcpy(buf, ms->data+ms->fpos, count);
ms->fpos += count;
- } else {
- stream->eof = 1;
}
return count;
}
} else {
ms->fpos = ms->fpos + offset;
*newoffs = ms->fpos;
+ stream->eof = 0;
return 0;
}
} else {
} else {
ms->fpos = ms->fpos + offset;
*newoffs = ms->fpos;
+ stream->eof = 0;
return 0;
}
}
} else {
ms->fpos = offset;
*newoffs = ms->fpos;
+ stream->eof = 0;
return 0;
}
case SEEK_END:
} else {
ms->fpos = ms->fsize + offset;
*newoffs = ms->fpos;
+ stream->eof = 0;
return 0;
}
default:
got = php_stream_read(ts->innerstream, buf, count);
- if (!got) {
- stream->eof |= ts->innerstream->eof;
- }
+ stream->eof = ts->innerstream->eof;
return got;
}
}
ret = php_stream_seek(ts->innerstream, offset, whence);
*newoffs = php_stream_tell(ts->innerstream);
+ stream->eof = ts->innerstream->eof;
return ret;
}