st/mesa: avoid aliasing violation in st_cb_perfmon.c
authorErik Faye-Lund <kusmabite@gmail.com>
Mon, 8 Aug 2016 08:11:31 +0000 (10:11 +0200)
committerErik Faye-Lund <kusmabite@gmail.com>
Sat, 1 Apr 2017 11:39:52 +0000 (13:39 +0200)
Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/mesa/state_tracker/st_cb_perfmon.c

index cd7fdc06173f326ffedea9a6ab3446cd01285e88..23d32dcad4722b722839ae1d847f2154517b29b2 100644 (file)
@@ -308,16 +308,16 @@ st_GetPerfMonitorResult(struct gl_context *ctx,
       data[offset++] = cid;
       switch (type) {
       case GL_UNSIGNED_INT64_AMD:
-         *(uint64_t *)&data[offset] = result.u64;
+         memcpy(&data[offset], &result.u64, sizeof(uint64_t));
          offset += sizeof(uint64_t) / sizeof(GLuint);
          break;
       case GL_UNSIGNED_INT:
-         *(uint32_t *)&data[offset] = result.u32;
+         memcpy(&data[offset], &result.u32, sizeof(uint32_t));
          offset += sizeof(uint32_t) / sizeof(GLuint);
          break;
       case GL_FLOAT:
       case GL_PERCENTAGE_AMD:
-         *(GLfloat *)&data[offset] = result.f;
+         memcpy(&data[offset], &result.f, sizeof(GLfloat));
          offset += sizeof(GLfloat) / sizeof(GLuint);
          break;
       }