Skip to content

Commit 0dd6267

Browse files
committed
ptr->reset() before free
1 parent c3ab8f6 commit 0dd6267

File tree

9 files changed

+112
-32
lines changed

9 files changed

+112
-32
lines changed

src/dnn/dnn.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,10 +276,14 @@ CvStatus Layer_GetType(Layer layer, char **rval)
276276
END_WRAP
277277
}
278278

279-
void Layer_Close(LayerPtr layer){CVD_FREE(layer)}
279+
void Layer_Close(LayerPtr layer)
280+
{
281+
layer->ptr->reset();
282+
CVD_FREE(layer)
283+
}
280284

281-
CvStatus
282-
NMSBoxes(VecRect bboxes, VecFloat scores, float score_threshold, float nms_threshold, VecInt *indices)
285+
CvStatus NMSBoxes(VecRect bboxes, VecFloat scores, float score_threshold, float nms_threshold,
286+
VecInt *indices)
283287
{
284288
BEGIN_WRAP
285289
std::vector<int> v;

src/extra/img_hash.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,11 @@ CvStatus BlockMeanHash_SetMode(BlockMeanHash self, int mode)
4545
BEGIN_WRAP(*self.ptr)->setMode(mode);
4646
END_WRAP
4747
}
48-
void BlockMeanHash_Close(BlockMeanHashPtr self){CVD_FREE(self)}
48+
void BlockMeanHash_Close(BlockMeanHashPtr self)
49+
{
50+
self->ptr->reset();
51+
CVD_FREE(self)
52+
}
4953

5054
CvStatus BlockMeanHash_Compute(BlockMeanHash self, Mat inputArr, Mat outputArr)
5155
{

src/extra/wechat_qrcode.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "wechat_qrcode.h"
2+
#include "core/core.h"
23
#include <vector>
34

45
CvStatus WeChatQRCode_New(WeChatQRCode *qrcode)
@@ -17,13 +18,8 @@ CvStatus WeChatQRCode_NewWithParams(const char *detector_prototxt_path, const ch
1718
super_resolution_caffe_model_path)};
1819
END_WRAP
1920
}
20-
void WeChatQRCode_Close(WeChatQRCodePtr self)
21-
{
22-
delete self->ptr;
23-
self->ptr = nullptr;
24-
delete self;
25-
self = nullptr;
26-
}
21+
void WeChatQRCode_Close(WeChatQRCodePtr self){CVD_FREE(self)}
22+
2723
CvStatus WeChatQRCode_DetectAndDecode(WeChatQRCode *self, Mat img, VecMat *points, VecVecChar *rval)
2824
{
2925
BEGIN_WRAP

src/features2d/features2d.cpp

Lines changed: 60 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ CvStatus AKAZE_Create(AKAZE *rval)
1414
*rval = {new cv::Ptr<cv::AKAZE>(cv::AKAZE::create())};
1515
END_WRAP
1616
}
17-
void AKAZE_Close(AKAZEPtr a){CVD_FREE(a)}
17+
void AKAZE_Close(AKAZEPtr a)
18+
{
19+
a->ptr->reset();
20+
CVD_FREE(a)
21+
}
1822

1923
CvStatus AKAZE_Detect(AKAZE a, Mat src, VecKeyPoint *rval)
2024
{
@@ -39,7 +43,11 @@ CvStatus AgastFeatureDetector_Create(AgastFeatureDetector *rval)
3943
*rval = {new cv::Ptr<cv::AgastFeatureDetector>(cv::AgastFeatureDetector::create())};
4044
END_WRAP
4145
}
42-
void AgastFeatureDetector_Close(AgastFeatureDetectorPtr a){CVD_FREE(a)}
46+
void AgastFeatureDetector_Close(AgastFeatureDetectorPtr a)
47+
{
48+
a->ptr->reset();
49+
CVD_FREE(a)
50+
}
4351

4452
CvStatus AgastFeatureDetector_Detect(AgastFeatureDetector a, Mat src, VecKeyPoint *rval)
4553
{
@@ -56,7 +64,11 @@ CvStatus BRISK_Create(BRISK *rval)
5664
*rval = {new cv::Ptr<cv::BRISK>(cv::BRISK::create())};
5765
END_WRAP
5866
}
59-
void BRISK_Close(BRISKPtr b){CVD_FREE(b)}
67+
void BRISK_Close(BRISKPtr b)
68+
{
69+
b->ptr->reset();
70+
CVD_FREE(b)
71+
}
6072

6173
CvStatus BRISK_Detect(BRISK b, Mat src, VecKeyPoint *rval)
6274
{
@@ -90,7 +102,11 @@ CvStatus FastFeatureDetector_CreateWithParams(int threshold, bool nonmaxSuppress
90102
cv::FastFeatureDetector::create(threshold, nonmaxSuppression, type_))};
91103
END_WRAP
92104
}
93-
void FastFeatureDetector_Close(FastFeatureDetectorPtr f){CVD_FREE(f)}
105+
void FastFeatureDetector_Close(FastFeatureDetectorPtr f)
106+
{
107+
f->ptr->reset();
108+
CVD_FREE(f)
109+
}
94110

95111
CvStatus FastFeatureDetector_Detect(FastFeatureDetector f, Mat src, VecKeyPoint *rval)
96112
{
@@ -107,7 +123,11 @@ CvStatus GFTTDetector_Create(GFTTDetector *rval)
107123
*rval = {new cv::Ptr<cv::GFTTDetector>(cv::GFTTDetector::create())};
108124
END_WRAP
109125
}
110-
void GFTTDetector_Close(GFTTDetectorPtr a){CVD_FREE(a)}
126+
void GFTTDetector_Close(GFTTDetectorPtr a)
127+
{
128+
a->ptr->reset();
129+
CVD_FREE(a)
130+
}
111131

112132
CvStatus GFTTDetector_Detect(GFTTDetector a, Mat src, VecKeyPoint *rval)
113133
{
@@ -124,7 +144,11 @@ CvStatus KAZE_Create(KAZE *rval)
124144
*rval = {new cv::Ptr<cv::KAZE>(cv::KAZE::create())};
125145
END_WRAP
126146
}
127-
void KAZE_Close(KAZEPtr a){CVD_FREE(a)}
147+
void KAZE_Close(KAZEPtr a)
148+
{
149+
a->ptr->reset();
150+
CVD_FREE(a)
151+
}
128152

129153
CvStatus KAZE_Detect(KAZE a, Mat src, VecKeyPoint *rval)
130154
{
@@ -149,7 +173,11 @@ CvStatus MSER_Create(MSER *rval)
149173
*rval = {new cv::Ptr<cv::MSER>(cv::MSER::create())};
150174
END_WRAP
151175
}
152-
void MSER_Close(MSERPtr a){CVD_FREE(a)}
176+
void MSER_Close(MSERPtr a)
177+
{
178+
a->ptr->reset();
179+
CVD_FREE(a)
180+
}
153181

154182
CvStatus MSER_Detect(MSER a, Mat src, VecKeyPoint *rval)
155183
{
@@ -176,7 +204,11 @@ CvStatus ORB_CreateWithParams(int nfeatures, float scaleFactor, int nlevels, int
176204
WTA_K, type, patchSize, fastThreshold))};
177205
END_WRAP
178206
}
179-
void ORB_Close(ORBPtr o){CVD_FREE(o)}
207+
void ORB_Close(ORBPtr o)
208+
{
209+
o->ptr->reset();
210+
CVD_FREE(o)
211+
}
180212

181213
CvStatus ORB_Detect(ORB o, Mat src, VecKeyPoint *rval)
182214
{
@@ -262,7 +294,11 @@ CvStatus SimpleBlobDetector_Create_WithParams(SimpleBlobDetectorParams params, S
262294
new cv::Ptr<cv::SimpleBlobDetector>(cv::SimpleBlobDetector::create(ConvertCParamsToCPPParams(params)))};
263295
END_WRAP
264296
}
265-
void SimpleBlobDetector_Close(SimpleBlobDetectorPtr b){CVD_FREE(b)}
297+
void SimpleBlobDetector_Close(SimpleBlobDetectorPtr b)
298+
{
299+
b->ptr->reset();
300+
CVD_FREE(b)
301+
}
266302

267303
CvStatus SimpleBlobDetector_Detect(SimpleBlobDetector b, Mat src, VecKeyPoint *rval)
268304
{
@@ -291,7 +327,11 @@ CvStatus BFMatcher_CreateWithParams(int normType, bool crossCheck, BFMatcher *rv
291327
*rval = {new cv::Ptr<cv::BFMatcher>(cv::BFMatcher::create(normType, crossCheck))};
292328
END_WRAP
293329
}
294-
void BFMatcher_Close(BFMatcherPtr b){CVD_FREE(b)}
330+
void BFMatcher_Close(BFMatcherPtr b)
331+
{
332+
b->ptr->reset();
333+
CVD_FREE(b)
334+
}
295335

296336
CvStatus BFMatcher_Match(BFMatcher b, Mat query, Mat train, VecDMatch *rval)
297337
{
@@ -316,7 +356,11 @@ CvStatus FlannBasedMatcher_Create(FlannBasedMatcher *rval)
316356
*rval = {new cv::Ptr<cv::FlannBasedMatcher>(cv::FlannBasedMatcher::create())};
317357
END_WRAP
318358
}
319-
void FlannBasedMatcher_Close(FlannBasedMatcherPtr f){CVD_FREE(f)}
359+
void FlannBasedMatcher_Close(FlannBasedMatcherPtr f)
360+
{
361+
f->ptr->reset();
362+
CVD_FREE(f)
363+
}
320364

321365
CvStatus FlannBasedMatcher_KnnMatch(FlannBasedMatcher f, Mat query, Mat train, int k, VecVecDMatch *rval)
322366
{
@@ -341,7 +385,11 @@ CvStatus SIFT_Create(SIFT *rval)
341385
*rval = {new cv::Ptr<cv::SIFT>(cv::SIFT::create())};
342386
END_WRAP
343387
}
344-
void SIFT_Close(SIFTPtr f){CVD_FREE(f)}
388+
void SIFT_Close(SIFTPtr f)
389+
{
390+
f->ptr->reset();
391+
CVD_FREE(f)
392+
}
345393

346394
CvStatus SIFT_Detect(SIFT f, Mat src, VecKeyPoint *rval)
347395
{

src/imgproc/imgproc.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,11 @@ CvStatus CLAHE_CreateWithParams(double clipLimit, Size tileGridSize, CLAHE *rval
715715
new cv::Ptr<cv::CLAHE>(cv::createCLAHE(clipLimit, cv::Size(tileGridSize.width, tileGridSize.height)))};
716716
END_WRAP
717717
}
718-
void CLAHE_Close(CLAHEPtr c){CVD_FREE(c)}
718+
void CLAHE_Close(CLAHEPtr c)
719+
{
720+
c->ptr->reset();
721+
CVD_FREE(c)
722+
}
719723

720724
CvStatus CLAHE_Apply(CLAHE c, Mat src, Mat dst)
721725
{

src/objdetect/objdetect.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ CvStatus FaceDetectorYN_NewFromBuffer(const char *framework, VecUChar buffer, Ve
411411

412412
void FaceDetectorYN_Close(FaceDetectorYNPtr self)
413413
{
414-
self->ptr = nullptr;
414+
self->ptr->reset();
415415
CVD_FREE(self)
416416
}
417417

@@ -486,7 +486,7 @@ CvStatus FaceRecognizerSF_New(const char *model, const char *config, int backend
486486
}
487487
void FaceRecognizerSF_Close(FaceRecognizerSFPtr self)
488488
{
489-
self->ptr = nullptr;
489+
self->ptr->reset();
490490
CVD_FREE(self)
491491
}
492492

src/photo/photo.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,11 @@ CvStatus MergeMertens_Process(MergeMertens b, VecMat src, Mat dst)
9898
BEGIN_WRAP(*b.ptr)->process(*src.ptr, *dst.ptr);
9999
END_WRAP
100100
}
101-
void MergeMertens_Close(MergeMertensPtr b){CVD_FREE(b)}
101+
void MergeMertens_Close(MergeMertensPtr b)
102+
{
103+
b->ptr->reset();
104+
CVD_FREE(b)
105+
}
102106

103107
CvStatus AlignMTB_Create(AlignMTB *rval)
104108
{
@@ -120,7 +124,11 @@ CvStatus AlignMTB_Process(AlignMTB b, VecMat src, VecMat *dst)
120124
*dst = {new std::vector<cv::Mat>(vec)};
121125
END_WRAP
122126
}
123-
void AlignMTB_Close(AlignMTBPtr b){CVD_FREE(b)}
127+
void AlignMTB_Close(AlignMTBPtr b)
128+
{
129+
b->ptr->reset();
130+
CVD_FREE(b)
131+
}
124132

125133
CvStatus DetailEnhance(Mat src, Mat dst, float sigma_s, float sigma_r)
126134
{

src/stitching/stitching.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ CvStatus Stitcher_Create(int mode, PtrStitcher *rval)
1313
END_WRAP
1414
}
1515

16-
void Stitcher_Close(PtrStitcherPtr stitcher){CVD_FREE(stitcher)}
16+
void Stitcher_Close(PtrStitcherPtr stitcher)
17+
{
18+
stitcher->ptr->reset();
19+
CVD_FREE(stitcher)
20+
}
1721

1822
CvStatus Stitcher_Get(PtrStitcher self, Stitcher *rval)
1923
{

src/video/video.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ CvStatus BackgroundSubtractorMOG2_CreateWithParams(int history, double varThresh
2323
cv::createBackgroundSubtractorMOG2(history, varThreshold, detectShadows))};
2424
END_WRAP
2525
}
26-
void BackgroundSubtractorMOG2_Close(BackgroundSubtractorMOG2Ptr self){CVD_FREE(self)}
26+
void BackgroundSubtractorMOG2_Close(BackgroundSubtractorMOG2Ptr self)
27+
{
28+
self->ptr->reset();
29+
CVD_FREE(self)
30+
}
2731

2832
CvStatus BackgroundSubtractorMOG2_Apply(BackgroundSubtractorMOG2 self, Mat src, Mat dst)
2933
{
@@ -45,7 +49,11 @@ CvStatus BackgroundSubtractorKNN_CreateWithParams(int history, double dist2Thres
4549
cv::createBackgroundSubtractorKNN(history, dist2Threshold, detectShadows))};
4650
END_WRAP
4751
}
48-
void BackgroundSubtractorKNN_Close(BackgroundSubtractorKNNPtr self){CVD_FREE(self)}
52+
void BackgroundSubtractorKNN_Close(BackgroundSubtractorKNNPtr self)
53+
{
54+
self->ptr->reset();
55+
CVD_FREE(self)
56+
}
4957

5058
CvStatus BackgroundSubtractorKNN_Apply(BackgroundSubtractorKNN self, Mat src, Mat dst)
5159
{
@@ -115,7 +123,11 @@ CvStatus TrackerMIL_Create(TrackerMIL *rval)
115123
*rval = {new cv::Ptr<cv::TrackerMIL>(cv::TrackerMIL::create())};
116124
END_WRAP
117125
}
118-
void TrackerMIL_Close(TrackerMILPtr self){CVD_FREE(self)}
126+
void TrackerMIL_Close(TrackerMILPtr self)
127+
{
128+
self->ptr->reset();
129+
CVD_FREE(self)
130+
}
119131

120132
CvStatus KalmanFilter_New(int dynamParams, int measureParams, int controlParams, int type, KalmanFilter *rval)
121133
{

0 commit comments

Comments
 (0)