From: Rémi Bernon rbernon@codeweavers.com
The shared object offset is an absolute offset from the start of the session shared memory file, as it is used to identify the corresponding mmapped block on the client side. --- server/mapping.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server/mapping.c b/server/mapping.c index 61e026359ae..7edadcbbeda 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -1394,7 +1394,7 @@ volatile void *alloc_shared_object(void)
if (!(block = find_free_session_block( size ))) return NULL; object = (struct session_object *)(block->data + block->used_size); - object->offset = (char *)&object->obj - block->data; + object->offset = block->offset + (char *)&object->obj - block->data; block->used_size += size; }