From fa7e7e54dcd9deb9526d0f20d708b115900631c1 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Thu, 5 Apr 2012 16:06:09 +0000 Subject: [PATCH] Fixed ugly bug in AlgorithmInfo initialisation order --- modules/core/src/algorithm.cpp | 12 ++-- modules/features2d/src/detectors.cpp | 100 +++++++++++++++++---------- modules/nonfree/src/surf.cpp | 43 +++++++----- 3 files changed, 100 insertions(+), 55 deletions(-) diff --git a/modules/core/src/algorithm.cpp b/modules/core/src/algorithm.cpp index 241c58e6f0..ab6ccc4e91 100644 --- a/modules/core/src/algorithm.cpp +++ b/modules/core/src/algorithm.cpp @@ -149,17 +149,21 @@ struct CV_EXPORTS AlgorithmInfoData }; -static sorted_vector alglist; +static sorted_vector& alglist() +{ + static sorted_vector alglist_var; + return alglist_var; +} void Algorithm::getList(vector& algorithms) { - alglist.get_keys(algorithms); + alglist().get_keys(algorithms); } Ptr Algorithm::_create(const string& name) { Algorithm::Constructor c = 0; - if( !alglist.find(name, c) ) + if( !alglist().find(name, c) ) return Ptr(); return c(); } @@ -282,7 +286,7 @@ AlgorithmInfo::AlgorithmInfo(const string& _name, Algorithm::Constructor create) { data = new AlgorithmInfoData; data->_name = _name; - alglist.add(_name, create); + alglist().add(_name, create); } AlgorithmInfo::~AlgorithmInfo() diff --git a/modules/features2d/src/detectors.cpp b/modules/features2d/src/detectors.cpp index 93890961b0..a8e8a15510 100644 --- a/modules/features2d/src/detectors.cpp +++ b/modules/features2d/src/detectors.cpp @@ -369,7 +369,13 @@ void PyramidAdaptedFeatureDetector::detectImpl( const Mat& image, vector