shm: Log a warning if a shm buffer address is requested when it may be invalid
authorDerek Foreman <derekf@osg.samsung.com>
Tue, 9 Feb 2016 22:29:49 +0000 (16:29 -0600)
committerBryce Harrington <bryce@osg.samsung.com>
Wed, 9 Mar 2016 00:55:02 +0000 (16:55 -0800)
If wl_shm_buffer_get_data() is called on a shm pool that has an external
reference and a pending resize, then the buffer may be outside the pool's
current mapping.

Log a warning if this happens.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
src/wayland-shm.c

index be3dd3f..5efbd70 100644 (file)
@@ -387,6 +387,11 @@ wl_shm_buffer_get_data(struct wl_shm_buffer *buffer)
        if (!buffer->pool)
                return NULL;
 
+       if (buffer->pool->external_refcount &&
+           (buffer->pool->size != buffer->pool->new_size))
+               wl_log("Buffer address requested when its parent pool "
+                      "has an external reference and a deferred resize "
+                      "pending.\n");
        return buffer->pool->data + buffer->offset;
 }