summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/nine/resource9.c
diff options
context:
space:
mode:
authorPatrick Rudolph <[email protected]>2015-11-14 13:02:43 +0100
committerAxel Davy <[email protected]>2016-02-04 22:12:17 +0100
commit827fee059e702b22c6f5e4a61fb1aff3e926899d (patch)
tree90c475663998b088d915108969fa25697d4f1774 /src/gallium/state_trackers/nine/resource9.c
parent5c79bd666b1163de42d6b4c0fc1a7fa2fd3c6b8e (diff)
st/nine: Fix resource9 private data
Store a copy of GUID in the header that is under our control and use it as key for the hashtable instead of using the application provided pointer. The application might change the memory after leaving the function. Fixes a crash for issue https://github.com/iXit/Mesa-3D/issues/130 Signed-off-by: Patrick Rudolph <[email protected]> Reviewed-by: Axel Davy <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/nine/resource9.c')
-rw-r--r--src/gallium/state_trackers/nine/resource9.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gallium/state_trackers/nine/resource9.c b/src/gallium/state_trackers/nine/resource9.c
index f3c26896aaf..56e85156a29 100644
--- a/src/gallium/state_trackers/nine/resource9.c
+++ b/src/gallium/state_trackers/nine/resource9.c
@@ -141,8 +141,9 @@ NineResource9_SetPrivateData( struct NineResource9 *This,
header->size = SizeOfData;
memcpy(header->data, user_data, header->size);
+ memcpy(&header->guid, refguid, sizeof(header->guid));
- err = util_hash_table_set(This->pdata, refguid, header);
+ err = util_hash_table_set(This->pdata, &header->guid, header);
if (err == PIPE_OK) {
if (header->unknown) { IUnknown_AddRef(*(IUnknown **)header->data); }
return D3D_OK;