summaryrefslogtreecommitdiff
path: root/extra/cairo
diff options
context:
space:
mode:
Diffstat (limited to 'extra/cairo')
-rw-r--r--extra/cairo/fix-mask-usage-in-image-compositor.patch172
-rw-r--r--extra/cairo/musl-stacksize.patch23
-rw-r--r--extra/cairo/pdf-font-subset-Generate-valid-font-names.patch58
3 files changed, 0 insertions, 253 deletions
diff --git a/extra/cairo/fix-mask-usage-in-image-compositor.patch b/extra/cairo/fix-mask-usage-in-image-compositor.patch
deleted file mode 100644
index 8d5717f..0000000
--- a/extra/cairo/fix-mask-usage-in-image-compositor.patch
+++ /dev/null
@@ -1,172 +0,0 @@
-From 03a820b173ed1fdef6ff14b4468f5dbc02ff59be Mon Sep 17 00:00:00 2001
-From: Heiko Lewin <heiko.lewin@worldiety.de>
-Date: Tue, 15 Dec 2020 16:48:19 +0100
-Subject: [PATCH 1/3] Fix mask usage in image-compositor
-
----
- src/cairo-image-compositor.c | 8 ++--
- test/Makefile.sources | 1 +
- test/bug-image-compositor.c | 39 ++++++++++++++++++++
- test/reference/bug-image-compositor.ref.png | Bin 0 -> 185 bytes
- 4 files changed, 44 insertions(+), 4 deletions(-)
- create mode 100644 test/bug-image-compositor.c
- create mode 100644 test/reference/bug-image-compositor.ref.png
-
-diff --git a/src/cairo-image-compositor.c b/src/cairo-image-compositor.c
-index 79ad69f68..4f8aaed99 100644
---- a/src/cairo-image-compositor.c
-+++ b/src/cairo-image-compositor.c
-@@ -2610,14 +2610,14 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
- unsigned num_spans)
- {
- cairo_image_span_renderer_t *r = abstract_renderer;
-- uint8_t *m;
-+ uint8_t *m, *base = (uint8_t*)pixman_image_get_data(r->mask);
- int x0;
-
- if (num_spans == 0)
- return CAIRO_STATUS_SUCCESS;
-
- x0 = spans[0].x;
-- m = r->_buf;
-+ m = base;
- do {
- int len = spans[1].x - spans[0].x;
- if (len >= r->u.composite.run_length && spans[0].coverage == 0xff) {
-@@ -2655,7 +2655,7 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
- spans[0].x, y,
- spans[1].x - spans[0].x, h);
-
-- m = r->_buf;
-+ m = base;
- x0 = spans[1].x;
- } else if (spans[0].coverage == 0x0) {
- if (spans[0].x != x0) {
-@@ -2684,7 +2684,7 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
- #endif
- }
-
-- m = r->_buf;
-+ m = base;
- x0 = spans[1].x;
- } else {
- *m++ = spans[0].coverage;
-diff --git a/test/bug-image-compositor.c b/test/bug-image-compositor.c
-new file mode 100644
-index 000000000..fc4fd370b
---- /dev/null
-+++ b/test/bug-image-compositor.c
-@@ -0,0 +1,39 @@
-+#include "cairo-test.h"
-+
-+static cairo_test_status_t
-+draw (cairo_t *cr, int width, int height)
-+{
-+ cairo_set_source_rgb (cr, 0., 0., 0.);
-+ cairo_paint (cr);
-+
-+ cairo_set_source_rgb (cr, 1., 1., 1.);
-+ cairo_set_line_width (cr, 1.);
-+
-+ cairo_pattern_t *p = cairo_pattern_create_linear (0, 0, width, height);
-+ cairo_pattern_add_color_stop_rgb (p, 0, 0.99, 1, 1);
-+ cairo_pattern_add_color_stop_rgb (p, 1, 1, 1, 1);
-+ cairo_set_source (cr, p);
-+
-+ cairo_move_to (cr, 0.5, -1);
-+ for (int i = 0; i < width; i+=3) {
-+ cairo_rel_line_to (cr, 2, 2);
-+ cairo_rel_line_to (cr, 1, -2);
-+ }
-+
-+ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
-+ cairo_stroke (cr);
-+
-+ cairo_pattern_destroy(p);
-+
-+ return CAIRO_TEST_SUCCESS;
-+}
-+
-+
-+CAIRO_TEST (bug_image_compositor,
-+ "Crash in image-compositor",
-+ "stroke, stress", /* keywords */
-+ NULL, /* requirements */
-+ 10000, 1,
-+ NULL, draw)
-+
-+
-
-From 8bc14a6bba3bc8a64ff0749c74d9b96305bf6429 Mon Sep 17 00:00:00 2001
-From: Heiko Lewin <heiko.lewin@worldiety.de>
-Date: Tue, 15 Dec 2020 17:14:18 +0100
-Subject: [PATCH 2/3] Minor cleanups
-
----
- test/bug-image-compositor.c | 33 ++++++++++++++++++++++++++++++---
- 1 file changed, 30 insertions(+), 3 deletions(-)
-
-diff --git a/test/bug-image-compositor.c b/test/bug-image-compositor.c
-index fc4fd370b..304ea089c 100644
---- a/test/bug-image-compositor.c
-+++ b/test/bug-image-compositor.c
-@@ -1,5 +1,34 @@
-+/*
-+ * Copyright © 2020 Uli Schlachter, Heiko Lewin
-+ *
-+ * Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use, copy,
-+ * modify, merge, publish, distribute, sublicense, and/or sell copies
-+ * of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-+ * SOFTWARE.
-+ *
-+ * Author: Uli Schlachter <psychon@znc.in>
-+ * Author: Heiko Lewin <hlewin@gmx.de>
-+ */
- #include "cairo-test.h"
-
-+
-+/* This test reproduces an overflow of a mask-buffer in cairo-image-compositor.c */
-+
- static cairo_test_status_t
- draw (cairo_t *cr, int width, int height)
- {
-@@ -13,6 +42,7 @@ draw (cairo_t *cr, int width, int height)
- cairo_pattern_add_color_stop_rgb (p, 0, 0.99, 1, 1);
- cairo_pattern_add_color_stop_rgb (p, 1, 1, 1, 1);
- cairo_set_source (cr, p);
-+ cairo_pattern_destroy(p);
-
- cairo_move_to (cr, 0.5, -1);
- for (int i = 0; i < width; i+=3) {
-@@ -23,8 +53,6 @@ draw (cairo_t *cr, int width, int height)
- cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
- cairo_stroke (cr);
-
-- cairo_pattern_destroy(p);
--
- return CAIRO_TEST_SUCCESS;
- }
-
-@@ -36,4 +64,3 @@ CAIRO_TEST (bug_image_compositor,
- 10000, 1,
- NULL, draw)
-
--
---
-GitLab
-
diff --git a/extra/cairo/musl-stacksize.patch b/extra/cairo/musl-stacksize.patch
deleted file mode 100644
index d10469e..0000000
--- a/extra/cairo/musl-stacksize.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Reduce the footprint of stack frame usage by turning
-some large(r) structures as `static __thread` instead.
-
---- a/src/cairo-rectangular-scan-converter.c 2015-10-27 22:04:21.000000000 +0100
-+++ b/src/cairo-rectangular-scan-converter.c 2016-05-07 04:25:26.640851782 +0200
-@@ -489,7 +489,7 @@
- cairo_span_renderer_t *renderer,
- rectangle_t **rectangles)
- {
-- sweep_line_t sweep_line;
-+ static __thread sweep_line_t sweep_line;
- rectangle_t *start, *stop;
- cairo_status_t status;
-
-@@ -656,7 +656,7 @@
- cairo_span_renderer_t *renderer)
- {
- cairo_rectangular_scan_converter_t *self = converter;
-- rectangle_t *rectangles_stack[CAIRO_STACK_ARRAY_LENGTH (rectangle_t *)];
-+ static __thread rectangle_t *rectangles_stack[CAIRO_STACK_ARRAY_LENGTH (rectangle_t *)];
- rectangle_t **rectangles;
- struct _cairo_rectangular_scan_converter_chunk *chunk;
- cairo_status_t status;
diff --git a/extra/cairo/pdf-font-subset-Generate-valid-font-names.patch b/extra/cairo/pdf-font-subset-Generate-valid-font-names.patch
deleted file mode 100644
index d5cfe2f..0000000
--- a/extra/cairo/pdf-font-subset-Generate-valid-font-names.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From a3b69a0215fdface0fd5730872a4b3242d979dca Mon Sep 17 00:00:00 2001
-From: Uli Schlachter <psychon@znc.in>
-Date: Tue, 9 Feb 2021 16:54:35 +0100
-Subject: [PATCH] pdf font subset: Generate valid font names
-
-A hash value is encoded in base 26 with upper case letters for font
-names.
-
-Commit ed984146 replaced "numerator = abs (hash);" with "numerator =
-hash;" in this code, because hash has type uint32_t and the compiler
-warned about taking the absolute value of an unsigned value. However,
-abs() is actually defined to take an int argument. Thus, there was some
-implicit cast.
-
-Since numerator has type long, i.e. is signed, it is now actually
-possible to get an overflow in the implicit cast and then have a
-negative number. The following code is not prepared for this and
-produces non-letters when encoding the hash.
-
-This commit fixes that problem by not using ldiv() and instead using /
-and % to directly compute the needed values. This gets rid of the need
-to convert to type long. Since now everything works with uint32_t, there
-is no more chance for negative numbers messing things up.
-
-Fixes: https://gitlab.freedesktop.org/cairo/cairo/-/issues/449
-Signed-off-by: Uli Schlachter <psychon@znc.in>
----
- src/cairo-pdf-surface.c | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
-
-diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c
-index 6da460878..52c49b6d2 100644
---- a/src/cairo-pdf-surface.c
-+++ b/src/cairo-pdf-surface.c
-@@ -5310,18 +5310,14 @@ _create_font_subset_tag (cairo_scaled_font_subset_t *font_subset,
- {
- uint32_t hash;
- int i;
-- long numerator;
-- ldiv_t d;
-
- hash = _hash_data ((unsigned char *) font_name, strlen(font_name), 0);
- hash = _hash_data ((unsigned char *) (font_subset->glyphs),
- font_subset->num_glyphs * sizeof(unsigned long), hash);
-
-- numerator = hash;
- for (i = 0; i < 6; i++) {
-- d = ldiv (numerator, 26);
-- numerator = d.quot;
-- tag[i] = 'A' + d.rem;
-+ tag[i] = 'A' + (hash % 26);
-+ hash /= 26;
- }
- tag[i] = 0;
- }
---
-GitLab
-