From: johanengelen Date: Thu, 17 Jan 2008 21:04:37 +0000 (+0000) Subject: Geom: fix a crash on assertion in sbasis-to-bezier.cpp X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;ds=sidebyside;h=d2948ab7e1ad8c5f8df65c5de9b7c6a40b1991a6;p=inkscape.git Geom: fix a crash on assertion in sbasis-to-bezier.cpp --- diff --git a/src/2geom/exception.h b/src/2geom/exception.h index 0791c8547..920cd5808 100644 --- a/src/2geom/exception.h +++ b/src/2geom/exception.h @@ -53,6 +53,7 @@ public: protected: std::string msgstr; }; +#define throwException(message) throw(Geom::Exception(message, __FILE__, __LINE__)) //----------------------------------------------------------------------- // Two main exception classes: LogicalError and RangeError. diff --git a/src/2geom/sbasis-to-bezier.cpp b/src/2geom/sbasis-to-bezier.cpp index 415b30d89..497091d1c 100644 --- a/src/2geom/sbasis-to-bezier.cpp +++ b/src/2geom/sbasis-to-bezier.cpp @@ -13,6 +13,7 @@ This is wrong, it should read #include "choose.h" #include "svg-path.h" #include +#include "exception.h" namespace Geom{ @@ -179,7 +180,9 @@ subpath_from_sbasis_incremental(Geom::OldPathSetBuilder &pb, D2 B, doubl #endif void build_from_sbasis(Geom::PathBuilder &pb, D2 const &B, double tol) { - assert(B.isFinite()); + if (!B.isFinite()) { + throwException("assertion failed: B.isFinite()"); + } if(tail_error(B, 2) < tol || sbasis_size(B) == 2) { // nearly cubic enough if(sbasis_size(B) <= 1) { pb.lineTo(B.at1());