Accepting request 445453 from home:mstaudt:929462boo-gdk-pixbuf
- u_contrib-gdk-pixbuf-xlib-Fix-rgb888amsb.patch Fix RGBA conversion for big endian X11 environments. Fixes (boo#929462), (bsc#1010497) OBS-URL: https://build.opensuse.org/request/show/445453 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gdk-pixbuf?expand=0&rev=117
This commit is contained in:
parent
854e62e992
commit
308d8162c6
@ -1,3 +1,10 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Dec 9 15:02:53 UTC 2016 - mstaudt@suse.com
|
||||
|
||||
- u_contrib-gdk-pixbuf-xlib-Fix-rgb888amsb.patch
|
||||
Fix RGBA conversion for big endian X11 environments.
|
||||
Fixes (boo#929462), (bsc#1010497)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 19 17:22:31 UTC 2016 - zaitor@opensuse.org
|
||||
|
||||
|
@ -30,6 +30,7 @@ Source: http://download.gnome.org/sources/gdk-pixbuf/2.36/%{name}-%{vers
|
||||
Source1: macros.gdk-pixbuf
|
||||
Source2: README.SUSE
|
||||
Source99: baselibs.conf
|
||||
Patch0: u_contrib-gdk-pixbuf-xlib-Fix-rgb888amsb.patch
|
||||
BuildRequires: libjasper-devel
|
||||
BuildRequires: libjpeg-devel
|
||||
BuildRequires: libtiff-devel
|
||||
@ -102,6 +103,7 @@ This package contains development files for gdk-pixbuf.
|
||||
%if !0%{?is_opensuse}
|
||||
translation-update-upstream
|
||||
%endif
|
||||
%patch0 -p1
|
||||
%if "%_lib" == "lib64"
|
||||
cp -a %{S:2} .
|
||||
%endif
|
||||
|
68
u_contrib-gdk-pixbuf-xlib-Fix-rgb888amsb.patch
Normal file
68
u_contrib-gdk-pixbuf-xlib-Fix-rgb888amsb.patch
Normal file
@ -0,0 +1,68 @@
|
||||
From: Max Staudt <mstaudt@suse.de>
|
||||
Date: Fri Dec 9 14:26:34 2016 +0100
|
||||
Subject: [PATCH]contrib/gdk-pixbuf-xlib: Fix rgb888amsb()
|
||||
Patch-mainline: to be upstreamed
|
||||
Git-repo: git://git.gnome.org/gdk-pixbuf
|
||||
References: boo#929462 bsc#1010497
|
||||
Signed-off-by: Max Staudt <mstaudt@suse.de>
|
||||
|
||||
On Little Endian, it wrote memory out of bounds (i.e. when running
|
||||
inside a little endian client, connecting to a big endian X server).
|
||||
|
||||
On Big Endian, it only processed the first 1/4 of the icon.
|
||||
|
||||
The effects can be seen when running IceWM. Running native on Big Endian
|
||||
ppc64 with a Big Endian X11 server, the icon background was 3/4 random:
|
||||
|
||||
https://bugzilla.suse.com/show_bug.cgi?id=929462
|
||||
|
||||
This match makes rgb888amsb() behave analogously to rgb888msb().
|
||||
|
||||
Signed-off-by: Max Staudt <mstaudt@suse.de>
|
||||
---
|
||||
contrib/gdk-pixbuf-xlib/gdk-pixbuf-xlib-drawable.c | 15 ---------------
|
||||
1 file changed, 15 deletions(-)
|
||||
|
||||
diff --git a/contrib/gdk-pixbuf-xlib/gdk-pixbuf-xlib-drawable.c b/contrib/gdk-pixbuf-xlib/gdk-pixbuf-xlib-drawable.c
|
||||
index 972c2be..422fdc8 100644
|
||||
--- a/contrib/gdk-pixbuf-xlib/gdk-pixbuf-xlib-drawable.c
|
||||
+++ b/contrib/gdk-pixbuf-xlib/gdk-pixbuf-xlib-drawable.c
|
||||
@@ -915,13 +915,8 @@ rgb888amsb (XImage *image, guchar *pixels, int rowstride, xlib_colormap *colorma
|
||||
int bpl;
|
||||
|
||||
guint8 *srow = (guint8 *)image->data, *orow = pixels;
|
||||
-#ifdef LITTLE
|
||||
- guint32 *o;
|
||||
- guint32 *s;
|
||||
-#else
|
||||
guint8 *s; /* for byte order swapping */
|
||||
guint8 *o;
|
||||
-#endif
|
||||
|
||||
d (printf ("32 bit, msb, with alpha\n"));
|
||||
|
||||
@@ -931,24 +926,14 @@ rgb888amsb (XImage *image, guchar *pixels, int rowstride, xlib_colormap *colorma
|
||||
|
||||
/* msb data */
|
||||
for (yy = 0; yy < height; yy++) {
|
||||
-#ifdef LITTLE
|
||||
- s = (guint32 *) srow;
|
||||
- o = (guint32 *) orow;
|
||||
-#else
|
||||
s = srow;
|
||||
o = orow;
|
||||
-#endif
|
||||
for (xx = 0; xx < width; xx++) {
|
||||
-#ifdef LITTLE
|
||||
*o++ = s[1];
|
||||
*o++ = s[2];
|
||||
*o++ = s[3];
|
||||
*o++ = 0xff;
|
||||
s += 4;
|
||||
-#else
|
||||
- *o++ = (*s << 8) | 0xff; /* untested */
|
||||
- s++;
|
||||
-#endif
|
||||
}
|
||||
srow += bpl;
|
||||
orow += rowstride;
|
Loading…
Reference in New Issue
Block a user