Make sure the surfaces own their pixels
When creating a surface for pixel data, make sure the surface keeps a reference to the pixels, either by directly owning them or by keeping a reference to the GdkPixbuf owning them. This fixes a crash when rendering some SVG files (e.g. [1]) to a recording or pdf surface. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=30071 . ==27565== Unaddressable byte(s) found during client check request ==27565== at 0x427E2C0: _cairo_debug_check_image_surface_is_defined (cairo-debug.c:125) ==27565== by 0x42B5749: _cairo_surface_acquire_source_image (cairo-surface.c:1447) ==27565== by 0x42BC119: _cairo_surface_snapshot_copy_on_write (cairo-surface-snapshot.c:125) ==27565== by 0x42B407E: _cairo_surface_detach_snapshot (cairo-surface.c:329) ==27565== by 0x42B3FE9: _cairo_surface_detach_snapshots (cairo-surface.c:314) ==27565== by 0x42B49D0: cairo_surface_finish (cairo-surface.c:715) ==27565== by 0x42B48EF: cairo_surface_destroy (cairo-surface.c:645) ==27565== by 0x42A16DA: _cairo_pattern_fini (cairo-pattern.c:346) ==27565== by 0x42A21D2: cairo_pattern_destroy (cairo-pattern.c:828) ==27565== by 0x4281FD8: _cairo_gstate_fini (cairo-gstate.c:229) ==27565== by 0x428211F: _cairo_gstate_restore (cairo-gstate.c:290) ==27565== by 0x4276D86: cairo_restore (cairo.c:583) ==27565== by 0x40390B0: rsvg_cairo_pop_discrete_layer (rsvg-cairo-draw.c:1003) ==27565== by 0x40380CD: rsvg_cairo_render_path (rsvg-cairo-draw.c:639) ==27565== by 0x4035C4D: rsvg_render_path (rsvg-base.c:2067) ==27565== by 0x40287FE: _rsvg_node_rect_draw (rsvg-shapes.c:445) ==27565== by 0x4029E89: rsvg_node_draw (rsvg-structure.c:69) ==27565== by 0x4029F34: _rsvg_node_draw_children (rsvg-structure.c:87) ==27565== by 0x4029E89: rsvg_node_draw (rsvg-structure.c:69) ==27565== by 0x402A9A9: rsvg_node_svg_draw (rsvg-structure.c:326) ==27565== by 0x4029E89: rsvg_node_draw (rsvg-structure.c:69) ==27565== by 0x4039D49: rsvg_handle_render_cairo_sub (rsvg-cairo-render.c:234) ==27565== by 0x4039DA1: rsvg_handle_render_cairo (rsvg-cairo-render.c:256) ==27565== by 0x804A06A: main (rsvg-convert.c:319) ==27565== Address 0x6c6b028 is not stack'd, malloc'd or (recently) free'd [1] http://websvn.kde.org/*checkout*/trunk/KDE/kdegames/libkdegames/carddecks/svg-oxygen-white/oxygen-white.svgz?revision=896352
parent
e1137e53
Please register or sign in to comment