added wx_truncate_cast and use it (sometimes instead of wx_static_cast) to explicitely show int truncation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35539 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -292,6 +292,13 @@ typedef int wxWindowID;
|
|||||||
#define wx_reinterpret_cast(t, x) ((t)(x))
|
#define wx_reinterpret_cast(t, x) ((t)(x))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
This one is a wx invention: like static cast but used when we intentionally
|
||||||
|
truncate from a larger to smaller type, static_cast<> can't be used for it
|
||||||
|
as it results in warnings when using some compilers (SGI mipspro for example)
|
||||||
|
*/
|
||||||
|
#define wx_truncate_cast(t, x) ((t)(x))
|
||||||
|
|
||||||
/* for consistency with wxStatic/DynamicCast defined in wx/object.h */
|
/* for consistency with wxStatic/DynamicCast defined in wx/object.h */
|
||||||
#define wxConstCast(obj, className) wx_const_cast(className *, obj)
|
#define wxConstCast(obj, className) wx_const_cast(className *, obj)
|
||||||
|
|
||||||
|
@@ -316,10 +316,11 @@ bool wxRegExImpl::GetMatch(size_t *start, size_t *len, size_t index) const
|
|||||||
|
|
||||||
const regmatch_t& match = m_Matches[index];
|
const regmatch_t& match = m_Matches[index];
|
||||||
|
|
||||||
|
// we need the casts because rm_so can be a 64 bit quantity
|
||||||
if ( start )
|
if ( start )
|
||||||
*start = match.rm_so;
|
*start = wx_truncate_cast(size_t, match.rm_so);
|
||||||
if ( len )
|
if ( len )
|
||||||
*len = match.rm_eo - match.rm_so;
|
*len = wx_truncate_cast(size_t, match.rm_eo - match.rm_so);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -93,10 +93,11 @@ wxFileOffset wxStringInputStream::OnSysSeek(wxFileOffset ofs, wxSeekMode mode)
|
|||||||
return wxInvalidOffset;
|
return wxInvalidOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ofs < 0 || wx_static_cast(size_t, ofs) > m_len )
|
if ( ofs < 0 || ofs > wx_static_cast(wxFileOffset, m_len) )
|
||||||
return wxInvalidOffset;
|
return wxInvalidOffset;
|
||||||
|
|
||||||
m_pos = wx_static_cast(size_t, ofs);
|
// FIXME: this can't be right
|
||||||
|
m_pos = wx_truncate_cast(size_t, ofs);
|
||||||
|
|
||||||
return ofs;
|
return ofs;
|
||||||
}
|
}
|
||||||
|
@@ -465,7 +465,11 @@ bool wxSound::Create(const wxString& fileName, bool isResource)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxFileOffset len = fileWave.Length();
|
wxFileOffset lenOrig = fileWave.Length();
|
||||||
|
if ( lenOrig == wxInvalidOffset )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
size_t len = wx_truncate_cast(size_t, lenOrig);
|
||||||
wxUint8 *data = new wxUint8[len];
|
wxUint8 *data = new wxUint8[len];
|
||||||
if (fileWave.Read(data, len) != len)
|
if (fileWave.Read(data, len) != len)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user