From 2ed20191e32b106db7fef632345fca5609bb318d Mon Sep 17 00:00:00 2001 From: ser1zw Date: Fri, 12 Aug 2011 15:59:58 +0900 Subject: [PATCH] added error handlings to some functions --- ext/opencv/cvmemstorage.cpp | 7 ++++++- ext/opencv/opencv.cpp | 21 ++++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/ext/opencv/cvmemstorage.cpp b/ext/opencv/cvmemstorage.cpp index cd3bf0f..3623f2b 100644 --- a/ext/opencv/cvmemstorage.cpp +++ b/ext/opencv/cvmemstorage.cpp @@ -48,7 +48,12 @@ rb_allocate(VALUE klass) void cvmemstorage_free(void *ptr) { - cvReleaseMemStorage((CvMemStorage**)&ptr); + try { + cvReleaseMemStorage((CvMemStorage**)&ptr); + } + catch (cv::Exception& e) { + raise_cverror(e); + } } VALUE diff --git a/ext/opencv/opencv.cpp b/ext/opencv/opencv.cpp index 3e5c54c..d092ba1 100644 --- a/ext/opencv/opencv.cpp +++ b/ext/opencv/opencv.cpp @@ -101,7 +101,12 @@ free_object(void *ptr) { if (ptr) { unregister_object(ptr); - cvFree(&ptr); + try { + cvFree(&ptr); + } + catch (cv::Exception& e) { + raise_cverror(e); + } } } @@ -113,7 +118,12 @@ release_object(void *ptr) { if (ptr) { unregister_object(ptr); - cvRelease(&ptr); + try { + cvRelease(&ptr); + } + catch (cv::Exception& e) { + raise_cverror(e); + } } } @@ -125,7 +135,12 @@ release_iplconvkernel_object(void *ptr) { if (ptr) { unregister_object(ptr); - cvReleaseStructuringElement((IplConvKernel**)(&ptr)); + try { + cvReleaseStructuringElement((IplConvKernel**)(&ptr)); + } + catch (cv::Exception& e) { + raise_cverror(e); + } } }