Huge streams checking and warning fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32580 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -580,7 +580,9 @@ wxFileOffset wxStreamBuffer::Seek(wxFileOffset pos, wxSeekMode mode)
|
|||||||
}
|
}
|
||||||
if (diff < 0 || diff > last_access)
|
if (diff < 0 || diff > last_access)
|
||||||
return wxInvalidOffset;
|
return wxInvalidOffset;
|
||||||
SetIntPosition(diff);
|
size_t int_diff = (size_t)diff;
|
||||||
|
wxCHECK_MSG( (wxFileOffset)int_diff == diff, wxInvalidOffset, wxT("huge file not supported") );
|
||||||
|
SetIntPosition(int_diff);
|
||||||
return diff;
|
return diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -605,7 +607,9 @@ wxFileOffset wxStreamBuffer::Seek(wxFileOffset pos, wxSeekMode mode)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetIntPosition(diff);
|
size_t int_diff = (size_t)diff;
|
||||||
|
wxCHECK_MSG( (wxFileOffset)int_diff == diff, wxInvalidOffset, wxT("huge file not supported") );
|
||||||
|
SetIntPosition(int_diff);
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -994,18 +998,22 @@ size_t wxCountingOutputStream::OnSysWrite(const void *WXUNUSED(buffer),
|
|||||||
|
|
||||||
wxFileOffset wxCountingOutputStream::OnSysSeek(wxFileOffset pos, wxSeekMode mode)
|
wxFileOffset wxCountingOutputStream::OnSysSeek(wxFileOffset pos, wxSeekMode mode)
|
||||||
{
|
{
|
||||||
|
ssize_t new_pos = (ssize_t)pos;
|
||||||
|
|
||||||
switch ( mode )
|
switch ( mode )
|
||||||
{
|
{
|
||||||
case wxFromStart:
|
case wxFromStart:
|
||||||
m_currentPos = pos;
|
wxCHECK_MSG( (wxFileOffset)new_pos == pos, wxInvalidOffset, wxT("huge position not supported") );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case wxFromEnd:
|
case wxFromEnd:
|
||||||
m_currentPos = m_lastcount + pos;
|
new_pos = m_lastcount + new_pos;
|
||||||
|
wxCHECK_MSG( (wxFileOffset)new_pos == (wxFileOffset)(m_lastcount + pos), wxInvalidOffset, wxT("huge position not supported") );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case wxFromCurrent:
|
case wxFromCurrent:
|
||||||
m_currentPos += pos;
|
new_pos = m_currentPos + new_pos;
|
||||||
|
wxCHECK_MSG( (wxFileOffset)new_pos == (wxFileOffset)(m_currentPos + pos), wxInvalidOffset, wxT("huge position not supported") );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -1013,6 +1021,8 @@ wxFileOffset wxCountingOutputStream::OnSysSeek(wxFileOffset pos, wxSeekMode mode
|
|||||||
return wxInvalidOffset;
|
return wxInvalidOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_currentPos = new_pos;
|
||||||
|
|
||||||
if (m_currentPos > m_lastcount)
|
if (m_currentPos > m_lastcount)
|
||||||
m_lastcount = m_currentPos;
|
m_lastcount = m_currentPos;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user