[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - canvas/source vcl/unx
Caolán McNamara
caolanm at redhat.com
Thu Apr 17 22:06:25 PDT 2014
canvas/source/cairo/cairo_canvasbitmap.cxx | 2 +-
canvas/source/cairo/cairo_xlib_cairo.cxx | 9 +++++----
vcl/unx/x11/xlimits.cxx | 13 ++++++-------
3 files changed, 12 insertions(+), 12 deletions(-)
New commits:
commit 0826bf264c7308be1da045b79bdcc2cff8b7cb42
Author: Caolán McNamara <caolanm at redhat.com>
Date: Thu Apr 17 11:56:17 2014 +0100
Resolves: rhbz#1086714 overlarge pixmap
(cherry picked from commit f31ac2405bbd0755fb14daa6cb84d7bb7d84c492)
Conflicts:
canvas/source/cairo/cairo_xlib_cairo.cxx
vcl/unx/x11/xlimits.cxx
Change-Id: I015308406a43e6b039059a5e35316d59745d0a48
Reviewed-on: https://gerrit.libreoffice.org/9083
Tested-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
diff --git a/canvas/source/cairo/cairo_canvasbitmap.cxx b/canvas/source/cairo/cairo_canvasbitmap.cxx
index 277c133..d243596 100644
--- a/canvas/source/cairo/cairo_canvasbitmap.cxx
+++ b/canvas/source/cairo/cairo_canvasbitmap.cxx
@@ -158,7 +158,7 @@ namespace cairocanvas
pPixels = cairo_image_surface_create( CAIRO_FORMAT_ARGB32,
aSize.Width(), aSize.Height() );
cairo_t *pCairo = cairo_create( pPixels );
- if( !pPixels || !pCairo )
+ if( !pPixels || !pCairo || cairo_status(pCairo) != CAIRO_STATUS_SUCCESS )
break;
// suck ourselves from the X server to this buffer so then we can fiddle with
diff --git a/canvas/source/cairo/cairo_xlib_cairo.cxx b/canvas/source/cairo/cairo_xlib_cairo.cxx
index bae6943..e5bb189 100644
--- a/canvas/source/cairo/cairo_xlib_cairo.cxx
+++ b/canvas/source/cairo/cairo_xlib_cairo.cxx
@@ -36,11 +36,12 @@ namespace
Pixmap limitXCreatePixmap(Display *display, Drawable d, unsigned int width, unsigned int height, unsigned int depth)
{
// The X protocol request CreatePixmap puts an upper bound
- // of 16 bit to the size.
- //
- // see, e.g. moz#424333, fdo#48961
+ // of 16 bit to the size. And in practice some drivers
+ // fall over with values close to the max.
+
+ // see, e.g. moz#424333, fdo#48961, rhbz#1086714
// we've a duplicate of this in vcl :-(
- if (width > SAL_MAX_INT16 || height > SAL_MAX_INT16)
+ if (width > SAL_MAX_INT16-10 || height > SAL_MAX_INT16-10)
{
SAL_WARN("canvas", "overlarge pixmap: " << width << " x " << height);
return None;
diff --git a/vcl/unx/x11/xlimits.cxx b/vcl/unx/x11/xlimits.cxx
index 71b9983..b8509cb 100644
--- a/vcl/unx/x11/xlimits.cxx
+++ b/vcl/unx/x11/xlimits.cxx
@@ -13,13 +13,12 @@
Pixmap limitXCreatePixmap(Display *display, Drawable d, unsigned int width, unsigned int height, unsigned int depth)
{
// The X protocol request CreatePixmap puts an upper bound
- // of 16 bit to the size. Beyond that there may be implementation
- // limits of the Xserver; which we should catch by a failed XCreatePixmap
- // call. However extra large values should be caught here since we'd run into
- // 16 bit truncation here without noticing.
- //
- // see, e.g. moz#424333
- if (width > SAL_MAX_INT16 || height > SAL_MAX_INT16)
+ // of 16 bit to the size. And in practice some drivers
+ // fall over with values close to the max.
+
+ // see, e.g. moz#424333, fdo#48961, rhbz#1086714
+ // we've a duplicate of this in canvas :-(
+ if (width > SAL_MAX_INT16-10 || height > SAL_MAX_INT16-10)
{
SAL_WARN("vcl", "overlarge pixmap: " << width << " x " << height);
return None;
More information about the Libreoffice-commits
mailing list