]> git.saurik.com Git - wxWidgets.git/commitdiff
avoid GCC warnings about breaking strict aliasing rules
authorPaul Cornett <paulcor@bullseye.com>
Sat, 2 Feb 2008 21:52:26 +0000 (21:52 +0000)
committerPaul Cornett <paulcor@bullseye.com>
Sat, 2 Feb 2008 21:52:26 +0000 (21:52 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/strconv.cpp
src/gtk/settings.cpp
src/gtk/toplevel.cpp
src/unix/utilsx11.cpp

index eb1cc823b12a70a9c52a59d6d0512bcbceba6af6..8acfe82ead4ea96ff886ada2789b5d95e976f6f8 100644 (file)
@@ -1981,7 +1981,7 @@ wxMBConv_iconv::wxMBConv_iconv(const char *name)
                 if ( m2w != ICONV_T_INVALID )
                 {
                     char    buf[2], *bufPtr;
                 if ( m2w != ICONV_T_INVALID )
                 {
                     char    buf[2], *bufPtr;
-                    wchar_t wbuf[2], *wbufPtr;
+                    wchar_t wbuf[2];
                     size_t  insz, outsz;
                     size_t  res;
 
                     size_t  insz, outsz;
                     size_t  res;
 
@@ -1990,12 +1990,12 @@ wxMBConv_iconv::wxMBConv_iconv(const char *name)
                     wbuf[0] = 0;
                     insz = 2;
                     outsz = SIZEOF_WCHAR_T * 2;
                     wbuf[0] = 0;
                     insz = 2;
                     outsz = SIZEOF_WCHAR_T * 2;
-                    wbufPtr = wbuf;
+                    char* wbufPtr = (char*)wbuf;
                     bufPtr = buf;
 
                     res = iconv(
                         m2w, ICONV_CHAR_CAST(&bufPtr), &insz,
                     bufPtr = buf;
 
                     res = iconv(
                         m2w, ICONV_CHAR_CAST(&bufPtr), &insz,
-                        (char**)&wbufPtr, &outsz);
+                        &wbufPtr, &outsz);
 
                     if (ICONV_FAILED(res, insz))
                     {
 
                     if (ICONV_FAILED(res, insz))
                     {
@@ -2091,16 +2091,16 @@ size_t wxMBConv_iconv::MB2WC(wchar_t *buf, const char *psz, size_t n) const
 
     size_t outbuf = n * SIZEOF_WCHAR_T;
     size_t res, cres;
 
     size_t outbuf = n * SIZEOF_WCHAR_T;
     size_t res, cres;
-    // VS: Use these instead of psz, buf because iconv() modifies its arguments:
-    wchar_t *bufPtr = buf;
     const char *pszPtr = psz;
 
     if (buf)
     {
     const char *pszPtr = psz;
 
     if (buf)
     {
+        char* bufPtr = (char*)buf;
+
         // have destination buffer, convert there
         cres = iconv(m2w,
                      ICONV_CHAR_CAST(&pszPtr), &inbuf,
         // have destination buffer, convert there
         cres = iconv(m2w,
                      ICONV_CHAR_CAST(&pszPtr), &inbuf,
-                     (char**)&bufPtr, &outbuf);
+                     &bufPtr, &outbuf);
         res = n - (outbuf / SIZEOF_WCHAR_T);
 
         if (ms_wcNeedsSwap)
         res = n - (outbuf / SIZEOF_WCHAR_T);
 
         if (ms_wcNeedsSwap)
@@ -2123,12 +2123,12 @@ size_t wxMBConv_iconv::MB2WC(wchar_t *buf, const char *psz, size_t n) const
 
         do
         {
 
         do
         {
-            bufPtr = tbuf;
+            char* bufPtr = (char*)tbuf;
             outbuf = 8 * SIZEOF_WCHAR_T;
 
             cres = iconv(m2w,
                          ICONV_CHAR_CAST(&pszPtr), &inbuf,
             outbuf = 8 * SIZEOF_WCHAR_T;
 
             cres = iconv(m2w,
                          ICONV_CHAR_CAST(&pszPtr), &inbuf,
-                         (char**)&bufPtr, &outbuf );
+                         &bufPtr, &outbuf );
 
             res += 8 - (outbuf / SIZEOF_WCHAR_T);
         }
 
             res += 8 - (outbuf / SIZEOF_WCHAR_T);
         }
@@ -2153,8 +2153,8 @@ size_t wxMBConv_iconv::WC2MB(char *buf, const wchar_t *psz, size_t n) const
 #endif
 
     size_t inlen = wxWcslen(psz);
 #endif
 
     size_t inlen = wxWcslen(psz);
-    size_t inbuf = inlen * SIZEOF_WCHAR_T;
-    size_t outbuf = n;
+    size_t inbuflen = inlen * SIZEOF_WCHAR_T;
+    size_t outbuflen = n;
     size_t res, cres;
 
     wchar_t *tmpbuf = 0;
     size_t res, cres;
 
     wchar_t *tmpbuf = 0;
@@ -2164,7 +2164,7 @@ size_t wxMBConv_iconv::WC2MB(char *buf, const wchar_t *psz, size_t n) const
         // need to copy to temp buffer to switch endianness
         // (doing WC_BSWAP twice on the original buffer won't help, as it
         //  could be in read-only memory, or be accessed in some other thread)
         // need to copy to temp buffer to switch endianness
         // (doing WC_BSWAP twice on the original buffer won't help, as it
         //  could be in read-only memory, or be accessed in some other thread)
-        tmpbuf = (wchar_t *)malloc(inbuf + SIZEOF_WCHAR_T);
+        tmpbuf = (wchar_t *)malloc(inbuflen + SIZEOF_WCHAR_T);
         for ( size_t i = 0; i < inlen; i++ )
             tmpbuf[n] = WC_BSWAP(psz[i]);
 
         for ( size_t i = 0; i < inlen; i++ )
             tmpbuf[n] = WC_BSWAP(psz[i]);
 
@@ -2172,12 +2172,13 @@ size_t wxMBConv_iconv::WC2MB(char *buf, const wchar_t *psz, size_t n) const
         psz = tmpbuf;
     }
 
         psz = tmpbuf;
     }
 
+    char* inbuf = (char*)psz;
     if (buf)
     {
         // have destination buffer, convert there
     if (buf)
     {
         // have destination buffer, convert there
-        cres = iconv( w2m, ICONV_CHAR_CAST(&psz), &inbuf, &buf, &outbuf );
+        cres = iconv(w2m, ICONV_CHAR_CAST(&inbuf), &inbuflen, &buf, &outbuflen);
 
 
-        res = n - outbuf;
+        res = n - outbuflen;
 
         // NB: iconv was given only wcslen(psz) characters on input, and so
         //     it couldn't convert the trailing zero. Let's do it ourselves
 
         // NB: iconv was given only wcslen(psz) characters on input, and so
         //     it couldn't convert the trailing zero. Let's do it ourselves
@@ -2194,11 +2195,11 @@ size_t wxMBConv_iconv::WC2MB(char *buf, const wchar_t *psz, size_t n) const
         do
         {
             buf = tbuf;
         do
         {
             buf = tbuf;
-            outbuf = 16;
+            outbuflen = 16;
 
 
-            cres = iconv( w2m, ICONV_CHAR_CAST(&psz), &inbuf, &buf, &outbuf );
+            cres = iconv(w2m, ICONV_CHAR_CAST(&inbuf), &inbuflen, &buf, &outbuflen);
 
 
-            res += 16 - outbuf;
+            res += 16 - outbuflen;
         }
         while ((cres == (size_t)-1) && (errno == E2BIG));
     }
         }
         while ((cres == (size_t)-1) && (errno == E2BIG));
     }
@@ -2208,7 +2209,7 @@ size_t wxMBConv_iconv::WC2MB(char *buf, const wchar_t *psz, size_t n) const
         free(tmpbuf);
     }
 
         free(tmpbuf);
     }
 
-    if (ICONV_FAILED(cres, inbuf))
+    if (ICONV_FAILED(cres, inbuflen))
     {
         wxLogTrace(TRACE_STRCONV, wxT("iconv failed: %s"), wxSysErrorMsg(wxSysErrorCode()));
         return wxCONV_FAILED;
     {
         wxLogTrace(TRACE_STRCONV, wxT("iconv failed: %s"), wxSysErrorMsg(wxSysErrorCode()));
         return wxCONV_FAILED;
index b36978475ac9b1b5949fe72ad61b5e1484518adc..3759a30a326fa81580e0f7211768f7738dc8e260 100644 (file)
@@ -414,7 +414,7 @@ static bool GetFrameExtents(GdkWindow* window, int* left, int* right, int* top,
         Atom type;
         int format;
         gulong nitems, bytes_after;
         Atom type;
         int format;
         gulong nitems, bytes_after;
-        long* data = NULL;
+        guchar* data;
         success = XGetWindowProperty(
             gdk_x11_drawable_get_xdisplay(window),
             gdk_x11_drawable_get_xid(window),
         success = XGetWindowProperty(
             gdk_x11_drawable_get_xdisplay(window),
             gdk_x11_drawable_get_xid(window),
@@ -422,17 +422,18 @@ static bool GetFrameExtents(GdkWindow* window, int* left, int* right, int* top,
             0, 4,
             false,
             XA_CARDINAL,
             0, 4,
             false,
             XA_CARDINAL,
-            &type, &format, &nitems, &bytes_after, (guchar**)&data
+            &type, &format, &nitems, &bytes_after, &data
             ) == Success;
         if (success)
         {
             success = data && nitems == 4;
             if (success)
             {
             ) == Success;
         if (success)
         {
             success = data && nitems == 4;
             if (success)
             {
-                if (left)   *left   = int(data[0]);
-                if (right)  *right  = int(data[1]);
-                if (top)    *top    = int(data[2]);
-                if (bottom) *bottom = int(data[3]);
+                long* p = (long*)data;
+                if (left)   *left   = int(p[0]);
+                if (right)  *right  = int(p[1]);
+                if (top)    *top    = int(p[2]);
+                if (bottom) *bottom = int(p[3]);
             }
             if (data)
                 XFree(data);
             }
             if (data)
                 XFree(data);
index 36c2bfe160af90c49a3dd1e55dee6da9ca883ac1..2f08c8dedde010046b150b8932d8fa6808f17471 100644 (file)
@@ -392,17 +392,18 @@ static gboolean property_notify_event(
         Atom type;
         int format;
         gulong nitems, bytes_after;
         Atom type;
         int format;
         gulong nitems, bytes_after;
-        long* data = NULL;
+        guchar* data;
         Status status = XGetWindowProperty(
             gdk_x11_drawable_get_xdisplay(event->window),
             gdk_x11_drawable_get_xid(event->window),
             xproperty,
             0, 4, false, XA_CARDINAL,
         Status status = XGetWindowProperty(
             gdk_x11_drawable_get_xdisplay(event->window),
             gdk_x11_drawable_get_xid(event->window),
             xproperty,
             0, 4, false, XA_CARDINAL,
-            &type, &format, &nitems, &bytes_after, (guchar**)&data);
+            &type, &format, &nitems, &bytes_after, &data);
         if (status == Success && data && nitems == 4)
         {
         if (status == Success && data && nitems == 4)
         {
+            long* p = (long*)data;
             const wxSize decorSize =
             const wxSize decorSize =
-                wxSize(int(data[0] + data[1]), int(data[2] + data[3]));
+                wxSize(int(p[0] + p[1]), int(p[2] + p[3]));
             if (win->m_decorSize != decorSize)
             {
                 const wxSize diff = decorSize - win->m_decorSize;
             if (win->m_decorSize != decorSize)
             {
                 const wxSize diff = decorSize - win->m_decorSize;
index 51736ee3321875bdb4e781030304e5bdc85835ed..efb3be521c40ca8062297f7d9cf1a6ea717c8869 100644 (file)
@@ -382,20 +382,20 @@ static bool wxKwinRunning(Display *display, Window rootWnd)
 {
     wxMAKE_ATOM(KWIN_RUNNING, display);
 
 {
     wxMAKE_ATOM(KWIN_RUNNING, display);
 
-    long *data;
+    unsigned char* data;
     Atom type;
     int format;
     unsigned long nitems, after;
     if (XGetWindowProperty(display, rootWnd,
                            KWIN_RUNNING, 0, 1, False, KWIN_RUNNING,
                            &type, &format, &nitems, &after,
     Atom type;
     int format;
     unsigned long nitems, after;
     if (XGetWindowProperty(display, rootWnd,
                            KWIN_RUNNING, 0, 1, False, KWIN_RUNNING,
                            &type, &format, &nitems, &after,
-                           (unsigned char**)&data) != Success)
+                           &data) != Success)
     {
         return false;
     }
 
     bool retval = (type == KWIN_RUNNING &&
     {
         return false;
     }
 
     bool retval = (type == KWIN_RUNNING &&
-                   nitems == 1 && data && data[0] == 1);
+                   nitems == 1 && data && ((long*)data)[0] == 1);
     XFree(data);
     return retval;
 }
     XFree(data);
     return retval;
 }