]> git.saurik.com Git - wxWidgets.git/commitdiff
added wx_truncate_cast and use it (sometimes instead of wx_static_cast) to explicitel...
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 17 Sep 2005 21:03:45 +0000 (21:03 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 17 Sep 2005 21:03:45 +0000 (21:03 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35539 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/defs.h
src/common/regex.cpp
src/common/sstream.cpp
src/unix/sound.cpp

index 2924970772b4853eab1c2199f45a92dec731b8c9..b18f62f9d5e2dc0d5cc56104cf87abf1e521797f 100644 (file)
@@ -292,6 +292,13 @@ typedef int wxWindowID;
     #define wx_reinterpret_cast(t, x) ((t)(x))
 #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 */
 #define wxConstCast(obj, className) wx_const_cast(className *, obj)
 
index 6f7d454e7723dbbfc9141a36ac6841e4a77225c7..ac85aac9720510d86a72b0e23a529eca9edcef32 100644 (file)
@@ -316,10 +316,11 @@ bool wxRegExImpl::GetMatch(size_t *start, size_t *len, size_t index) const
 
     const regmatch_t& match = m_Matches[index];
 
+    // we need the casts because rm_so can be a 64 bit quantity
     if ( start )
-        *start = match.rm_so;
+        *start = wx_truncate_cast(size_t, match.rm_so);
     if ( len )
-        *len = match.rm_eo - match.rm_so;
+        *len = wx_truncate_cast(size_t, match.rm_eo - match.rm_so);
 
     return true;
 }
index 0e783fb64084a58a34148630fd88d2cf7ca47e37..8033dff28c97ced7ec0777d2b3843c0948b74f62 100644 (file)
@@ -93,10 +93,11 @@ wxFileOffset wxStringInputStream::OnSysSeek(wxFileOffset ofs, wxSeekMode mode)
             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;
 
-    m_pos = wx_static_cast(size_t, ofs);
+    // FIXME: this can't be right
+    m_pos = wx_truncate_cast(size_t, ofs);
 
     return ofs;
 }
index 8ef528b48991df484bd52c4054d3531c4c231056..3871409e7ee0c944e9b269d19d5aa38c8879fdad 100644 (file)
@@ -465,7 +465,11 @@ bool wxSound::Create(const wxString& fileName, bool isResource)
         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];
     if (fileWave.Read(data, len) != len)
     {