st/mesa: avoid aliasing violation in st_cb_perfmon.c

Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
Erik Faye-Lund 2016-08-08 10:11:31 +02:00
parent 52f9ccefcb
commit c33807463e

View file

@ -308,16 +308,16 @@ st_GetPerfMonitorResult(struct gl_context *ctx,
data[offset++] = cid; data[offset++] = cid;
switch (type) { switch (type) {
case GL_UNSIGNED_INT64_AMD: 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); offset += sizeof(uint64_t) / sizeof(GLuint);
break; break;
case GL_UNSIGNED_INT: case GL_UNSIGNED_INT:
*(uint32_t *)&data[offset] = result.u32; memcpy(&data[offset], &result.u32, sizeof(uint32_t));
offset += sizeof(uint32_t) / sizeof(GLuint); offset += sizeof(uint32_t) / sizeof(GLuint);
break; break;
case GL_FLOAT: case GL_FLOAT:
case GL_PERCENTAGE_AMD: case GL_PERCENTAGE_AMD:
*(GLfloat *)&data[offset] = result.f; memcpy(&data[offset], &result.f, sizeof(GLfloat));
offset += sizeof(GLfloat) / sizeof(GLuint); offset += sizeof(GLfloat) / sizeof(GLuint);
break; break;
} }