summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryce Harrington <bryce@osg.samsung.com>2014-09-22 15:48:49 -0700
committerBryce Harrington <bryce@osg.samsung.com>2014-09-22 15:48:49 -0700
commita02e29a12d82f177bdf99ed8cfd0c3b3b78c44da (patch)
tree022e9571b3889e74ecd297860d6342c9fb1b5802
parent150c1e7044c57443d458e12bfc427d3a019cb60b (diff)
downloadcairo-a02e29a12d82f177bdf99ed8cfd0c3b3b78c44da.tar.gz
Don't return NULL to clients when getting device
Return an error device instead Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=58061
-rw-r--r--src/cairo-cogl-surface.c2
-rw-r--r--src/drm/cairo-drm.c9
2 files changed, 7 insertions, 4 deletions
diff --git a/src/cairo-cogl-surface.c b/src/cairo-cogl-surface.c
index 7389c3e8e..c57fd7f43 100644
--- a/src/cairo-cogl-surface.c
+++ b/src/cairo-cogl-surface.c
@@ -2789,7 +2789,7 @@ cairo_cogl_device_create (CoglContext *cogl_context)
ERROR:
g_free (dev);
- return NULL;
+ return _cairo_device_create_in_error (CAIRO_STATUS_DEVICE_ERROR);
}
slim_hidden_def (cairo_cogl_device_create);
diff --git a/src/drm/cairo-drm.c b/src/drm/cairo-drm.c
index 051b79e4f..661e181b6 100644
--- a/src/drm/cairo-drm.c
+++ b/src/drm/cairo-drm.c
@@ -202,8 +202,7 @@ cairo_drm_device_get (struct udev_device *device)
parent = udev_device_get_parent (device);
pci_id = get_udev_property (parent, "PCI_ID");
if (pci_id == NULL || sscanf (pci_id, "%x:%x", &vendor_id, &chip_id) != 2) {
- dev = (cairo_drm_device_t *)
- _cairo_device_create_in_error (CAIRO_STATUS_DEVICE_ERROR);
+ dev = NULL;
goto DONE;
}
@@ -239,6 +238,7 @@ cairo_drm_device_get (struct udev_device *device)
if (fd == -1) {
/* XXX more likely to be a permissions issue... */
_cairo_error_throw (CAIRO_STATUS_FILE_NOT_FOUND);
+ dev = NULL;
goto DONE;
}
@@ -249,7 +249,10 @@ cairo_drm_device_get (struct udev_device *device)
DONE:
CAIRO_MUTEX_UNLOCK (_cairo_drm_device_mutex);
- return &dev->base;
+ if (dev == NULL)
+ return _cairo_device_create_in_error (CAIRO_STATUS_DEVICE_ERROR);
+ else
+ return &dev->base;
}
slim_hidden_def (cairo_drm_device_get);