Compares the user data for the key quark on object with
oldval, and if they are the same, replaces oldval with
newval.
This is like a typical atomic compare-and-exchange
operation, for user data on an object.
If the previous value was replaced then ownership of the
old value (oldval) is passed to the caller, including
the registered destroy notify for it (passed out in old_destroy).
It’s up to the caller to free this as needed, which may
or may not include using old_destroy as sometimes replacement
should not destroy the object in the normal way.
Compares the user data for the key quark on object with oldval, and if they are the same, replaces oldval with newval.
This is like a typical atomic compare-and-exchange operation, for user data on an object.
If the previous value was replaced then ownership of the old value (oldval) is passed to the caller, including the registered destroy notify for it (passed out in old_destroy). It’s up to the caller to free this as needed, which may or may not include using old_destroy as sometimes replacement should not destroy the object in the normal way.