summaryrefslogtreecommitdiff
path: root/extra/cairo/fix-mask-usage-in-image-compositor.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extra/cairo/fix-mask-usage-in-image-compositor.patch')
-rw-r--r--extra/cairo/fix-mask-usage-in-image-compositor.patch172
1 files changed, 0 insertions, 172 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
-