From a7e180a5db1980b422463cf15db700255f4650f8 Mon Sep 17 00:00:00 2001 From: ser1zw Date: Thu, 21 Jul 2011 23:14:12 +0900 Subject: [PATCH] added error handling to Curve methods --- ext/opencv/curve.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ext/opencv/curve.cpp b/ext/opencv/curve.cpp index 024a3e5..8a506a8 100644 --- a/ext/opencv/curve.cpp +++ b/ext/opencv/curve.cpp @@ -95,9 +95,16 @@ rb_arc_length(int argc, VALUE *argv, VALUE self) { VALUE slice, is_closed; rb_scan_args(argc, argv, "02", &slice, &is_closed); - return rb_float_new(cvArcLength(CVARR(self), - NIL_P(slice) ? CV_WHOLE_SEQ : VALUE_TO_CVSLICE(slice), - TRUE_OR_FALSE(is_closed, -1))); + double length = 0; + try { + length = cvArcLength(CVARR(self), + NIL_P(slice) ? CV_WHOLE_SEQ : VALUE_TO_CVSLICE(slice), + TRUE_OR_FALSE(is_closed, -1)); + } + catch (cv::Exception& e) { + raise_cverror(e); + } + return rb_float_new(length); } __NAMESPACE_END_CURVE