From 6ee24230324394a8dc26a4e46e0a679b2f29b0ec Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Sun, 26 May 2013 21:56:10 +0200 Subject: Prevent crash from middle marker when a path or polyline has only one point. (bzr r12343) --- src/sp-shape.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/sp-shape.cpp') diff --git a/src/sp-shape.cpp b/src/sp-shape.cpp index 4037b302c..be9f5388c 100644 --- a/src/sp-shape.cpp +++ b/src/sp-shape.cpp @@ -889,8 +889,8 @@ int SPShape::numberOfMarkers(int type) if (pathv.size() == 0) { return 0; } - switch(type) { + case SP_MARKER_LOC: { if ( this->_marker[SP_MARKER_LOC] ) { @@ -914,7 +914,9 @@ int SPShape::numberOfMarkers(int type) for(Geom::PathVector::const_iterator path_it = pathv.begin(); path_it != pathv.end(); ++path_it) { n += path_it->size_default() + 1; } - return n - 2; // minus the start and end marker. + n = (n > 1) ? (n - 2) : 0; // Minus the start and end marker, but never negative. + // A path or polyline may have only one point. + return n; } else { return 0; } -- cgit v1.2.3 From 4905eea9e87b0ee6709dd838f1378409ea1250a3 Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Thu, 13 Jun 2013 22:36:04 -0400 Subject: Do not allow markers for children of markers (prevent loop) Fixed bugs: - https://launchpad.net/bugs/261786 (bzr r12372) --- src/sp-shape.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/sp-shape.cpp') diff --git a/src/sp-shape.cpp b/src/sp-shape.cpp index be9f5388c..38ffbb20c 100644 --- a/src/sp-shape.cpp +++ b/src/sp-shape.cpp @@ -868,6 +868,13 @@ int SPShape::hasMarkers() const all three settings. This should be fixed later such that if 'marker' is specified, then all three should appear. */ + // Ignore markers for objects which are inside markers themselves. + for (SPObject *parent = this->parent; parent != NULL; parent = parent->parent) { + if(SP_IS_MARKER(parent)) { + return 0; + } + } + return ( this->_curve && (this->_marker[SP_MARKER_LOC] || -- cgit v1.2.3