From 312f1e6e371f72910501aad1e270e04756d613ec Mon Sep 17 00:00:00 2001 From: Michael Wetherell Date: Tue, 27 Sep 2005 21:45:48 +0000 Subject: [PATCH] Use the new wx_truncate_cast for any narrowing conversions git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35748 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/zipstrm.cpp | 79 ++++++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 33 deletions(-) diff --git a/src/common/zipstrm.cpp b/src/common/zipstrm.cpp index a2e12cc38b..92d972002c 100644 --- a/src/common/zipstrm.cpp +++ b/src/common/zipstrm.cpp @@ -164,7 +164,8 @@ wxStoredInputStream::wxStoredInputStream(wxInputStream& stream) size_t wxStoredInputStream::OnSysRead(void *buffer, size_t size) { - size_t count = wxMin(size, wx_truncate_cast(size_t, m_len - m_pos)); + size_t count = wx_truncate_cast(size_t, + wxMin(size + wxFileOffset(0), m_len - m_pos + size_t(0))); count = m_parent_i_stream->Read(buffer, count).LastRead(); m_pos += count; @@ -552,11 +553,13 @@ public: wxZipWeakLinks *AddEntry(wxZipEntry *entry, wxFileOffset key); void RemoveEntry(wxFileOffset key) - { m_entries.erase((wx__OffsetZipEntryMap::key_type)key); } + { m_entries.erase(wx_truncate_cast(key_type, key)); } wxZipEntry *GetEntry(wxFileOffset key) const; bool IsEmpty() const { return m_entries.empty(); } private: + typedef wx__OffsetZipEntryMap::key_type key_type; + ~wxZipWeakLinks() { wxASSERT(IsEmpty()); } int m_ref; @@ -565,7 +568,7 @@ private: wxZipWeakLinks *wxZipWeakLinks::AddEntry(wxZipEntry *entry, wxFileOffset key) { - m_entries[(wx__OffsetZipEntryMap::key_type)key] = entry; + m_entries[wx_truncate_cast(key_type, key)] = entry; m_ref++; return this; } @@ -573,7 +576,7 @@ wxZipWeakLinks *wxZipWeakLinks::AddEntry(wxZipEntry *entry, wxFileOffset key) wxZipEntry *wxZipWeakLinks::GetEntry(wxFileOffset key) const { wx__OffsetZipEntryMap::const_iterator it = - m_entries.find((wx__OffsetZipEntryMap::key_type)key); + m_entries.find(wx_truncate_cast(key_type, key)); return it != m_entries.end() ? it->second : NULL; } @@ -894,7 +897,7 @@ size_t wxZipEntry::WriteLocal(wxOutputStream& stream, wxMBConv& conv) const const wxWX2MBbuf name_buf = conv.cWX2MB(unixName); const char *name = name_buf; if (!name) name = ""; - wxUint16 nameLen = (wxUint16)strlen(name); + wxUint16 nameLen = wx_truncate_cast(wxUint16, strlen(name)); wxDataOutputStream ds(stream); @@ -902,11 +905,13 @@ size_t wxZipEntry::WriteLocal(wxOutputStream& stream, wxMBConv& conv) const ds.Write32(GetDateTime().GetAsDOS()); ds.Write32(m_Crc); - ds.Write32(m_CompressedSize != wxInvalidOffset ? (wxUint32)m_CompressedSize : 0); - ds.Write32(m_Size != wxInvalidOffset ? (wxUint32)m_Size : 0); + ds.Write32(m_CompressedSize != wxInvalidOffset ? + wx_truncate_cast(wxUint32, m_CompressedSize) : 0); + ds.Write32(m_Size != wxInvalidOffset ? + wx_truncate_cast(wxUint32, m_Size) : 0); ds << nameLen; - wxUint16 extraLen = (wxUint16)GetLocalExtraLen(); + wxUint16 extraLen = wx_truncate_cast(wxUint16, GetLocalExtraLen()); ds.Write16(extraLen); stream.Write(name, nameLen); @@ -958,31 +963,31 @@ size_t wxZipEntry::WriteCentral(wxOutputStream& stream, wxMBConv& conv) const const wxWX2MBbuf name_buf = conv.cWX2MB(unixName); const char *name = name_buf; if (!name) name = ""; - wxUint16 nameLen = (wxUint16)strlen(name); + wxUint16 nameLen = wx_truncate_cast(wxUint16, strlen(name)); const wxWX2MBbuf comment_buf = conv.cWX2MB(m_Comment); const char *comment = comment_buf; if (!comment) comment = ""; - wxUint16 commentLen = (wxUint16)strlen(comment); + wxUint16 commentLen = wx_truncate_cast(wxUint16, strlen(comment)); - wxUint16 extraLen = (wxUint16)GetExtraLen(); + wxUint16 extraLen = wx_truncate_cast(wxUint16, GetExtraLen()); wxDataOutputStream ds(stream); ds << CENTRAL_MAGIC << m_VersionMadeBy << m_SystemMadeBy; - ds.Write16((wxUint16)GetVersionNeeded()); - ds.Write16((wxUint16)GetFlags()); - ds.Write16((wxUint16)GetMethod()); + ds.Write16(wx_truncate_cast(wxUint16, GetVersionNeeded())); + ds.Write16(wx_truncate_cast(wxUint16, GetFlags())); + ds.Write16(wx_truncate_cast(wxUint16, GetMethod())); ds.Write32(GetDateTime().GetAsDOS()); ds.Write32(GetCrc()); - ds.Write32((wxUint32)GetCompressedSize()); - ds.Write32((wxUint32)GetSize()); + ds.Write32(wx_truncate_cast(wxUint32, GetCompressedSize())); + ds.Write32(wx_truncate_cast(wxUint32, GetSize())); ds.Write16(nameLen); ds.Write16(extraLen); ds << commentLen << m_DiskStart << m_InternalAttributes - << m_ExternalAttributes << (wxUint32)GetOffset(); + << m_ExternalAttributes << wx_truncate_cast(wxUint32, GetOffset()); stream.Write(name, nameLen); if (extraLen) @@ -1024,7 +1029,7 @@ size_t wxZipEntry::ReadDescriptor(wxInputStream& stream) { // it's an info-zip record as expected stream.Ungetch(buf + 4, sizeof(buf) - 4); - m_Crc = (wxUint32)m_CompressedSize; + m_Crc = wx_truncate_cast(wxUint32, m_CompressedSize); m_CompressedSize = m_Size; m_Size = u1; return SUMS_SIZE + 4; @@ -1044,8 +1049,8 @@ size_t wxZipEntry::WriteDescriptor(wxOutputStream& stream, wxUint32 crc, wxDataOutputStream ds(stream); ds.Write32(crc); - ds.Write32((wxUint32)compressedSize); - ds.Write32((wxUint32)size); + ds.Write32(wx_truncate_cast(wxUint32, compressedSize)); + ds.Write32(wx_truncate_cast(wxUint32, size)); return SUMS_SIZE; } @@ -1067,13 +1072,20 @@ public: wxFileOffset GetOffset() const { return m_Offset; } wxString GetComment() const { return m_Comment; } - void SetDiskNumber(int num) { m_DiskNumber = (wxUint16)num; } - void SetStartDisk(int num) { m_StartDisk = (wxUint16)num; } - void SetEntriesHere(int num) { m_EntriesHere = (wxUint16)num; } - void SetTotalEntries(int num) { m_TotalEntries = (wxUint16)num; } - void SetSize(wxFileOffset size) { m_Size = (wxUint32)size; } - void SetOffset(wxFileOffset offset) { m_Offset = (wxUint32)offset; } - void SetComment(const wxString& comment) { m_Comment = comment; } + void SetDiskNumber(int num) + { m_DiskNumber = wx_truncate_cast(wxUint16, num); } + void SetStartDisk(int num) + { m_StartDisk = wx_truncate_cast(wxUint16, num); } + void SetEntriesHere(int num) + { m_EntriesHere = wx_truncate_cast(wxUint16, num); } + void SetTotalEntries(int num) + { m_TotalEntries = wx_truncate_cast(wxUint16, num); } + void SetSize(wxFileOffset size) + { m_Size = wx_truncate_cast(wxUint32, size); } + void SetOffset(wxFileOffset offset) + { m_Offset = wx_truncate_cast(wxUint32, offset); } + void SetComment(const wxString& comment) + { m_Comment = comment; } bool Read(wxInputStream& stream, wxMBConv& conv); bool Write(wxOutputStream& stream, wxMBConv& conv) const; @@ -1384,7 +1396,8 @@ bool wxZipInputStream::FindEndRecord() wxFileOffset minpos = wxMax(pos - 65535L, 0); while (pos > minpos) { - size_t len = (size_t)(pos - wxMax(pos - (BUFSIZE - 3), minpos)); + size_t len = wx_truncate_cast(size_t, + pos - wxMax(pos - (BUFSIZE - 3), minpos)); memcpy(buf.data() + len, buf, 3); pos -= len; @@ -1775,10 +1788,10 @@ wxFileOffset wxZipInputStream::OnSysSeek(wxFileOffset seek, wxSeekMode mode) default : nextpos = pos; break; /* just to fool compiler, never happens */ } - size_t toskip wxDUMMY_INITIALIZE(0); + wxFileOffset toskip wxDUMMY_INITIALIZE(0); if ( nextpos >= pos ) { - toskip = (size_t)(nextpos - pos); + toskip = nextpos - pos; } else { @@ -1789,17 +1802,17 @@ wxFileOffset wxZipInputStream::OnSysSeek(wxFileOffset seek, wxSeekMode mode) m_lasterror = wxSTREAM_READ_ERROR; return pos; } - toskip = (size_t)nextpos; + toskip = nextpos; } if ( toskip > 0 ) { - const size_t BUFSIZE = 4096; + const int BUFSIZE = 4096; size_t sz; char buffer[BUFSIZE]; while ( toskip > 0 ) { - sz = wxMin(toskip, BUFSIZE); + sz = wx_truncate_cast(size_t, wxMin(toskip, BUFSIZE)); Read(buffer, sz); toskip -= sz; } -- 2.45.2