Core: SizeStream fixed

git-svn-id: svn://ultimatepp.org/upp/trunk@9986 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2016-06-28 13:13:37 +00:00
parent a87d322fee
commit 37762af597
2 changed files with 16 additions and 32 deletions

View file

@ -975,45 +975,32 @@ MemReadStream::MemReadStream() {}
// --------------------------- Size stream -----------------------
void SizeStream::Seek(int64 apos) {
if(ptr - buffer + pos > size)
size = ptr - buffer + pos;
pos = apos;
if(pos > GetSize())
pos = GetSize();
ptr = buffer;
int64 SizeStream::GetSize() const
{
return int64(ptr - buffer + pos);
}
int64 SizeStream::GetSize() const {
return max(int64(ptr - buffer + pos), size);
}
void SizeStream::SetSize(int64 asize) {
size = asize;
if(ptr - buffer + pos > size) {
ptr = buffer;
pos = size;
}
}
void SizeStream::_Put(const void *, dword sz) {
wrlim = buffer + 128;
void SizeStream::_Put(const void *, dword sz)
{
wrlim = buffer + 256;
pos += ptr - buffer + sz;
ptr = buffer;
}
void SizeStream::_Put(int w) {
void SizeStream::_Put(int w)
{
_Put(NULL, 1);
}
bool SizeStream::IsOpen() const {
bool SizeStream::IsOpen() const
{
return true;
}
SizeStream::SizeStream() {
size = 0;
style = STRM_WRITE|STRM_SEEK;
buffer = h;
SizeStream::SizeStream()
{
style = STRM_WRITE;
buffer = ptr = h;
}
// ------------------------------ Compare stream ----------------------------

View file

@ -470,19 +470,16 @@ protected:
virtual void _Put(const void *data, dword size);
public:
virtual void Seek(int64 pos);
virtual int64 GetSize() const;
virtual void SetSize(int64 size);
virtual bool IsOpen() const;
protected:
int64 size;
byte h[128];
public:
operator int64() const { return GetSize(); }
void Open() { ptr = buffer; size = 0; ClearError(); }
void Open() { ptr = buffer; ClearError(); }
SizeStream();
};
@ -504,7 +501,7 @@ private:
Stream *stream;
bool equal;
int64 size;
byte h[128];
byte h[256];
void Compare(int64 pos, const void *data, int size);