From d2948ab7e1ad8c5f8df65c5de9b7c6a40b1991a6 Mon Sep 17 00:00:00 2001 From: johanengelen Date: Thu, 17 Jan 2008 21:04:37 +0000 Subject: [PATCH] Geom: fix a crash on assertion in sbasis-to-bezier.cpp --- src/2geom/exception.h | 1 + src/2geom/sbasis-to-bezier.cpp | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) 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()); -- 2.30.2