diff --git a/dix/privates.c b/dix/privates.c index 29e261f6b..8aab32d0e 100644 --- a/dix/privates.c +++ b/dix/privates.c @@ -117,7 +117,7 @@ dixAllocatePrivate(PrivateRec **privates, devprivate_key_t *const key) /* call any init funcs and return */ if (item) { - PrivateCallbackRec calldata = { key, ptr->value }; + PrivateCallbackRec calldata = { key, &ptr->value }; CallCallbacks(&item->initfuncs, &calldata); } return &ptr->value; @@ -138,7 +138,7 @@ dixFreePrivates(PrivateRec *privates) item = findItem(ptr->key); if (item) { calldata.key = ptr->key; - calldata.value = ptr->value; + calldata.value = &ptr->value; CallCallbacks(&item->deletefuncs, &calldata); } } diff --git a/include/privates.h b/include/privates.h index 6071e3958..e57f16712 100644 --- a/include/privates.h +++ b/include/privates.h @@ -112,7 +112,7 @@ dixSetPrivate(PrivateRec **privates, devprivate_key_t *const key, pointer val) */ typedef struct _PrivateCallback { devprivate_key_t *key; /* private registration key */ - pointer value; /* pointer to private */ + pointer *value; /* address of private pointer */ } PrivateCallbackRec; extern int