diff --git a/src/sp-pattern.cpp b/src/sp-pattern.cpp
index 8de8ac77b1a3e1a3beffbe7af6b0d3d8c76f6dcc..4a919afa669cf6d1cf8dca485aa06cd75ecec7d2 100644 (file)
--- a/src/sp-pattern.cpp
+++ b/src/sp-pattern.cpp
@@ -484,12 +484,9 @@ sp_pattern_transform_multiply (SPPattern *pattern, NR::Matrix postmul, bool set)
}
pattern->patternTransform_set = TRUE;
- gchar c[256];
- if (sp_svg_transform_write(c, 256, pattern->patternTransform)) {
- SP_OBJECT_REPR(pattern)->setAttribute("patternTransform", c);
- } else {
- SP_OBJECT_REPR(pattern)->setAttribute("patternTransform", NULL);
- }
+ gchar *c=sp_svg_transform_write(pattern->patternTransform);
+ SP_OBJECT_REPR(pattern)->setAttribute("patternTransform", c);
+ g_free(c);
}
const gchar *
@@ -503,13 +500,9 @@ pattern_tile (GSList *reprs, NR::Rect bounds, SPDocument *document, NR::Matrix t
sp_repr_set_svg_double(repr, "width", bounds.extent(NR::X));
sp_repr_set_svg_double(repr, "height", bounds.extent(NR::Y));
- gchar t[256];
- if (sp_svg_transform_write(t, 256, transform)) {
- repr->setAttribute("patternTransform", t);
- } else {
- repr->setAttribute("patternTransform", NULL);
- }
-
+ gchar *t=sp_svg_transform_write(transform);
+ repr->setAttribute("patternTransform", t);
+ g_free(t);
defsrepr->appendChild(repr);
const gchar *pat_id = repr->attribute("id");
// Access functions that look up fields up the chain of referenced patterns and return the first one which is set
+// FIXME: all of them must use chase_hrefs the same as in SPGradient, to avoid lockup on circular refs
guint pattern_patternUnits (SPPattern *pat)
{
@@ -791,7 +785,7 @@ sp_pattern_painter_new (SPPaintServer *ps, NR::Matrix const &full_transform, NR:
}
nr_arena_item_invoke_update (pp->root, NULL, &gc, NR_ARENA_ITEM_STATE_ALL, NR_ARENA_ITEM_STATE_ALL);
if ( pp->use_cached_tile ) {
- nr_arena_item_invoke_render (pp->root, &pp->cached_bbox, &pp->cached_tile, 0);
+ nr_arena_item_invoke_render (NULL, pp->root, &pp->cached_bbox, &pp->cached_tile, 0);
} else {
// nothing to do now
}
// fixme: (Lauris)
nr_pixblock_setup_extern (&ppb, pb->mode, area.x0, area.y0, area.x1, area.y1, NR_PIXBLOCK_PX (pb), pb->rs, FALSE, FALSE);
- nr_arena_item_invoke_render (pp->root, &area, &ppb, 0);
+ nr_arena_item_invoke_render (NULL, pp->root, &area, &ppb, 0);
nr_pixblock_release (&ppb);
}