diff options
author | Uli Schlachter <psychon@znc.in> | 2011-07-21 16:03:36 +0200 |
---|---|---|
committer | Uli Schlachter <psychon@znc.in> | 2011-07-21 16:51:26 +0200 |
commit | 0858533419dc1a38ef7c2bf6e07fb89714af5598 (patch) | |
tree | 11f95a776a4b1ef96ab0828d5fd663bff981f644 /src/cairo-xlib-display.c | |
parent | 7c2ccef3eb636661ee45c501c8345b6bde9a827c (diff) | |
download | cairo-0858533419dc1a38ef7c2bf6e07fb89714af5598.tar.gz |
Xlib,xcb: Make *_debug_[sg]et_precision() more robust
This adds checks for NULL pointers, devices in an error state and devices which
aren't owned by the right backend.
Signed-off-by: Uli Schlachter <psychon@znc.in>
Diffstat (limited to 'src/cairo-xlib-display.c')
-rw-r--r-- | src/cairo-xlib-display.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/cairo-xlib-display.c b/src/cairo-xlib-display.c index cce69ff90..fe93e1cae 100644 --- a/src/cairo-xlib-display.c +++ b/src/cairo-xlib-display.c @@ -749,8 +749,15 @@ void cairo_xlib_device_debug_set_precision (cairo_device_t *device, int precision) { - if (device->status) - return; + if (device == NULL || device->status) + return; + if (device->backend->type != CAIRO_DEVICE_TYPE_XLIB) { + cairo_status_t status; + + status = _cairo_device_set_error (device, CAIRO_STATUS_DEVICE_TYPE_MISMATCH); + (void) status; + return; + } ((cairo_xlib_display_t *) device)->force_precision = precision; } @@ -758,8 +765,15 @@ cairo_xlib_device_debug_set_precision (cairo_device_t *device, int cairo_xlib_device_debug_get_precision (cairo_device_t *device) { - if (device->status) - return -1; + if (device == NULL || device->status) + return -1; + if (device->backend->type != CAIRO_DEVICE_TYPE_XLIB) { + cairo_status_t status; + + status = _cairo_device_set_error (device, CAIRO_STATUS_DEVICE_TYPE_MISMATCH); + (void) status; + return -1; + } return ((cairo_xlib_display_t *) device)->force_precision; } |