diff --git a/modules/ml/src/rtrees.cpp b/modules/ml/src/rtrees.cpp index 8879999de3..f2331275a4 100644 --- a/modules/ml/src/rtrees.cpp +++ b/modules/ml/src/rtrees.cpp @@ -158,8 +158,12 @@ CvDTreeSplit* CvForestTree::find_best_split( CvDTreeNode* node ) cv::parallel_reduce(cv::BlockedRange(0, data->var_count), finder); - CvDTreeSplit *bestSplit = data->new_split_cat( 0, -1.0f ); - memcpy( bestSplit, finder.bestSplit, finder.splitSize ); + CvDTreeSplit *bestSplit = 0; + if( finder.bestSplit->quality > 0 ) + { + bestSplit = data->new_split_cat( 0, -1.0f ); + memcpy( bestSplit, finder.bestSplit, finder.splitSize ); + } return bestSplit; } diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index 117a269f34..ebf9cc2d8c 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -1877,8 +1877,12 @@ CvDTreeSplit* CvDTree::find_best_split( CvDTreeNode* node ) cv::parallel_reduce(cv::BlockedRange(0, data->var_count), finder); - CvDTreeSplit *bestSplit = data->new_split_cat( 0, -1.0f ); - memcpy( bestSplit, finder.bestSplit, finder.splitSize ); + CvDTreeSplit *bestSplit = 0; + if( finder.bestSplit->quality > 0 ) + { + bestSplit = data->new_split_cat( 0, -1.0f ); + memcpy( bestSplit, finder.bestSplit, finder.splitSize ); + } return bestSplit; }