[cairo-bugs] [Bug 102966] CAIRO_STATUS_NO_MEMORY after filling with pattern and large translation

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Sep 28 21:06:22 UTC 2017


https://bugs.freedesktop.org/show_bug.cgi?id=102966

Jason Crain <jason at inspiresomeone.us> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         QA Contact|                            |cairo-bugs at cairographics.or
                   |                            |g
          Component|cairo backend               |general
           Assignee|poppler-bugs at lists.freedesk |chris at chris-wilson.co.uk
                   |top.org                     |
            Product|poppler                     |cairo
            Summary|Internal Error: cairo       |CAIRO_STATUS_NO_MEMORY
                   |context error: out of       |after filling with pattern
                   |memory<0a>                  |and large translation

--- Comment #1 from Jason Crain <jason at inspiresomeone.us> ---
This PDF is doing a pattern fill under odd coordinates. For some reason having
a large offset to the operation makes cairo have an out of memory error. It's
doing roughly this:


// create pattern
cairo_surface_t *surfacep = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
                                                        25, 25);
cairo_t *crp = cairo_create (surfacep);
cairo_set_source_rgb (crp, 0, 0, 0);
cairo_paint (crp);
cairo_pattern_t *pattern = cairo_pattern_create_for_surface (surfacep);
cairo_matrix_t mat = {2, 0, 0, 2, 0, 0};
cairo_pattern_set_matrix (pattern, &mat);
cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);

// draw pattern to surface
cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
                                                       100, 100);
cairo_t *cr0 = cairo_create (surface);
cairo_translate (cr0, 0, -50000);
cairo_set_source (cr0, pattern);
cairo_rectangle (cr0, 0, 50000, 100, 100);
cairo_fill (cr0);

cairo_status_t status = cairo_status (cr0);
printf ("cairo_status: %s\n", cairo_status_to_string (status));

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cairographics.org/archives/cairo-bugs/attachments/20170928/1c8c0546/attachment.html>


More information about the cairo-bugs mailing list