summaryrefslogtreecommitdiff
path: root/community
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2018-11-16 14:55:36 +0100
committerErich Eckner <git@eckner.net>2018-11-16 14:55:36 +0100
commitc76ab2cf1976a432d24899168e34381f97a431b1 (patch)
treec3bffc94f843b79ce8f659a2b1e807b7ad7f7afd /community
parent71912a82f6019dde5795859f46be70430a40ac1f (diff)
downloadpackages-c76ab2cf1976a432d24899168e34381f97a431b1.tar.xz
community/grim: add temporary fix for type mismatch
Diffstat (limited to 'community')
-rw-r--r--community/grim/PKGBUILD7
-rw-r--r--community/grim/bced8c88165bd15cf97d3b55a9241b0a6ee1fe3c.patch80
2 files changed, 87 insertions, 0 deletions
diff --git a/community/grim/PKGBUILD b/community/grim/PKGBUILD
new file mode 100644
index 00000000..4c7f6cf1
--- /dev/null
+++ b/community/grim/PKGBUILD
@@ -0,0 +1,7 @@
+# temporary fix for type mismatch
+source+=('bced8c88165bd15cf97d3b55a9241b0a6ee1fe3c.patch')
+sha256sums+=('9614a426ac697cacbb7e08f6d5a12466071052d7ae14ef31a05e51d50f510de1')
+prepare() {
+ cd "$pkgname"
+ patch -p1 -i '../bced8c88165bd15cf97d3b55a9241b0a6ee1fe3c.patch'
+}
diff --git a/community/grim/bced8c88165bd15cf97d3b55a9241b0a6ee1fe3c.patch b/community/grim/bced8c88165bd15cf97d3b55a9241b0a6ee1fe3c.patch
new file mode 100644
index 00000000..48afa84f
--- /dev/null
+++ b/community/grim/bced8c88165bd15cf97d3b55a9241b0a6ee1fe3c.patch
@@ -0,0 +1,80 @@
+From aa679f0501a30fb5a452d35f7ef9d7ed2c3fa2f9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <jpokorny@fedoraproject.org>
+Date: Sat, 3 Nov 2018 15:16:08 +0100
+Subject: [PATCH] Fix i686 build -Werror=incompatible-pointer-types complaint
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This was caused with jpeg_mem_dest expecting pointer to unsigned long
+and being fed with pointer to size_t, which may amount to different
+data-width types. There's also a simple overflow check for such
+cases now.
+
+Signed-off-by: Jan Pokorný <jpokorny@fedoraproject.org>
+---
+ cairo_jpg.c | 17 +++++++++--------
+ include/cairo_jpg.h | 2 +-
+ 2 files changed, 10 insertions(+), 9 deletions(-)
+
+diff --git a/cairo_jpg.c b/cairo_jpg.c
+index e905e4e..3a37a37 100644
+--- a/cairo_jpg.c
++++ b/cairo_jpg.c
+@@ -7,7 +7,9 @@
+ #include <stdlib.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <assert.h>
+ #include <fcntl.h>
++#include <limits.h>
+ #include <unistd.h>
+ #include <cairo.h>
+ #include <jpeglib.h>
+@@ -15,7 +17,7 @@
+ #include "cairo_jpg.h"
+
+ cairo_status_t cairo_surface_write_to_jpeg_mem(cairo_surface_t *sfc,
+- unsigned char **data, size_t *len, int quality) {
++ unsigned char **data, unsigned long *len, int quality) {
+ struct jpeg_compress_struct cinfo;
+ struct jpeg_error_mgr jerr;
+ JSAMPROW row_pointer[1];
+@@ -91,18 +93,17 @@ cairo_status_t cairo_surface_write_to_jpeg_stream(cairo_surface_t *sfc,
+ cairo_write_func_t write_func, void *closure, int quality) {
+ cairo_status_t e;
+ unsigned char *data = NULL;
+- size_t len = 0;
++ unsigned long len = 0;
+
+ e = cairo_surface_write_to_jpeg_mem(sfc, &data, &len, quality);
+- if (e != CAIRO_STATUS_SUCCESS) {
+- return e;
++ if (e == CAIRO_STATUS_SUCCESS) {
++ assert(sizeof(unsigned long) <= sizeof(size_t)
++ || !(len >> (sizeof(size_t) * CHAR_BIT)));
++ e = write_func(closure, data, len);
++ free(data);
+ }
+
+- e = write_func(closure, data, len);
+-
+- free(data);
+ return e;
+-
+ }
+
+ cairo_status_t cairo_surface_write_to_jpeg(cairo_surface_t *sfc,
+diff --git a/include/cairo_jpg.h b/include/cairo_jpg.h
+index a2d0328..7e09e55 100644
+--- a/include/cairo_jpg.h
++++ b/include/cairo_jpg.h
+@@ -3,7 +3,7 @@
+
+ #include <cairo.h>
+
+-cairo_status_t cairo_surface_write_to_jpeg_mem(cairo_surface_t *sfc, unsigned char **data, size_t *len, int quality);
++cairo_status_t cairo_surface_write_to_jpeg_mem(cairo_surface_t *sfc, unsigned char **data, unsigned long *len, int quality);
+ cairo_status_t cairo_surface_write_to_jpeg_stream(cairo_surface_t *sfc, cairo_write_func_t write_func, void *closure, int quality);
+ cairo_status_t cairo_surface_write_to_jpeg(cairo_surface_t *sfc, const char *filename, int quality);
+