summaryrefslogtreecommitdiffstats
path: root/src/glx/packsingle.h
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2015-06-23 18:41:38 -0700
committerMatt Turner <[email protected]>2016-07-26 12:12:27 -0700
commit5ed3299822c1eec29d95f20c19ee334dd767ec2a (patch)
tree4474be0c5d41271035a8a9267e861a68596c0a49 /src/glx/packsingle.h
parent2a1d2874f1f98a41d62174091cb3c303c120ca3d (diff)
glx: Avoid aliasing violations.
Compilers are perfectly capable of generating efficient code for calls like these to memcpy(). Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/glx/packsingle.h')
-rw-r--r--src/glx/packsingle.h15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/glx/packsingle.h b/src/glx/packsingle.h
index fddcbf157f8..99a170d5cd5 100644
--- a/src/glx/packsingle.h
+++ b/src/glx/packsingle.h
@@ -103,24 +103,19 @@
a = (GLint) reply.size
#define __GLX_SINGLE_GET_CHAR(p) \
- *p = *(GLbyte *)&reply.pad3;
+ memcpy((p), &reply.pad3, 1);
#define __GLX_SINGLE_GET_SHORT(p) \
- *p = *(GLshort *)&reply.pad3;
+ memcpy((p), &reply.pad3, 2);
#define __GLX_SINGLE_GET_LONG(p) \
- *p = *(GLint *)&reply.pad3;
+ memcpy((p), &reply.pad3, 4);
#define __GLX_SINGLE_GET_FLOAT(p) \
- *p = *(GLfloat *)&reply.pad3;
+ memcpy((p), &reply.pad3, 4);
-#ifdef __GLX_ALIGN64
#define __GLX_SINGLE_GET_DOUBLE(p) \
- __GLX_MEM_COPY(p, &reply.pad3, 8)
-#else
-#define __GLX_SINGLE_GET_DOUBLE(p) \
- *p = *(GLdouble *)&reply.pad3
-#endif
+ memcpy((p), &reply.pad3, 8);
/* Get an array of typed data */
#define __GLX_SINGLE_GET_VOID_ARRAY(a,alen) \