mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-08 21:58:04 +02:00
[surface] Protect against the user setting a fallback resolution of 0.
Bug 23067 -- using clear drawing operator crashes printing http://bugs.freedesktop.org/show_bug.cgi?id=23067 Here we were hitting an assert within the paginated surface after creating a zero sized fallback image, due to the paginated surface being created with an x fallback resolution of 0 dpi (by _gtk_printer_create_cairo_surface(), gtk/gtkprinter.c:924). Avoid the bug by guarding against bad input to cairo_surface_set_fallback_resolution() which also allows us to identity the invalid caller.
This commit is contained in:
parent
a3f393cf64
commit
60c574ad06
1 changed files with 8 additions and 0 deletions
|
|
@ -1218,6 +1218,14 @@ cairo_surface_set_fallback_resolution (cairo_surface_t *surface,
|
|||
return;
|
||||
}
|
||||
|
||||
if (x_pixels_per_inch <= 0 || y_pixels_per_inch <= 0) {
|
||||
/* XXX Could delay raising the error until we fallback, but throwing
|
||||
* the error here means that we can catch the real culprit.
|
||||
*/
|
||||
status = _cairo_surface_set_error (surface, CAIRO_STATUS_INVALID_MATRIX);
|
||||
return;
|
||||
}
|
||||
|
||||
_cairo_surface_begin_modification (surface);
|
||||
|
||||
surface->x_fallback_resolution = x_pixels_per_inch;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue