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 83538831ea2..f681704bec9 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; }