summaryrefslogtreecommitdiffstats
path: root/src/sp-shape.cpp
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2010-10-23 20:24:27 +0000
committerJohan Engelen <goejendaagh@zonnet.nl>2010-10-23 20:24:27 +0000
commit685ca91c9f6142ddee5b5da0c0ab77cf64459c7f (patch)
tree15a1cfcf621c9601e0eccf78797c256c1715436d /src/sp-shape.cpp
parentfix crash bug: PDF export: crash in 'CairoRenderContext::_showGlyphs' (diff)
downloadinkscape-685ca91c9f6142ddee5b5da0c0ab77cf64459c7f.tar.gz
inkscape-685ca91c9f6142ddee5b5da0c0ab77cf64459c7f.zip
Don't try displaying markers for completely empty paths, fixes crash.
Fixed bugs: - https://launchpad.net/bugs/511577 (bzr r9843)
Diffstat (limited to 'src/sp-shape.cpp')
-rw-r--r--src/sp-shape.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/sp-shape.cpp b/src/sp-shape.cpp
index b64ad45e0..4d765af99 100644
--- a/src/sp-shape.cpp
+++ b/src/sp-shape.cpp
@@ -410,7 +410,9 @@ sp_shape_update_marker_view (SPShape *shape, NRArenaItem *ai)
// position arguments to sp_marker_show_instance, basically counts the amount of markers.
int counter[4] = {0};
+ if (!shape->curve) return;
Geom::PathVector const & pathv = shape->curve->get_pathvector();
+ if (pathv.empty()) return;
// the first vertex should get a start marker, the last an end marker, and all the others a mid marker
// see bug 456148
@@ -585,7 +587,7 @@ static void sp_shape_bbox(SPItem const *item, NRRect *bbox, Geom::Matrix const &
}
// Union with bboxes of the markers, if any
- if (sp_shape_has_markers (shape)) {
+ if (sp_shape_has_markers (shape) && !shape->curve->get_pathvector().empty()) {
/** \todo make code prettier! */
Geom::PathVector const & pathv = shape->curve->get_pathvector();
// START marker
@@ -767,6 +769,9 @@ sp_shape_print (SPItem *item, SPPrintContext *ctx)
if (!shape->curve) return;
+ Geom::PathVector const & pathv = shape->curve->get_pathvector();
+ if (pathv.empty()) return;
+
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
gint add_comments = prefs->getBool("/printing/debug/add-label-comments");
if (add_comments) {
@@ -788,15 +793,14 @@ sp_shape_print (SPItem *item, SPPrintContext *ctx)
SPStyle* style = SP_OBJECT_STYLE (item);
if (!style->fill.isNone()) {
- sp_print_fill (ctx, shape->curve->get_pathvector(), &i2d, style, &pbox, &dbox, &bbox);
+ sp_print_fill (ctx, pathv, &i2d, style, &pbox, &dbox, &bbox);
}
if (!style->stroke.isNone()) {
- sp_print_stroke (ctx, shape->curve->get_pathvector(), &i2d, style, &pbox, &dbox, &bbox);
+ sp_print_stroke (ctx, pathv, &i2d, style, &pbox, &dbox, &bbox);
}
/** \todo make code prettier */
- Geom::PathVector const & pathv = shape->curve->get_pathvector();
// START marker
for (int i = 0; i < 2; i++) { // SP_MARKER_LOC and SP_MARKER_LOC_START
if ( shape->marker[i] ) {