Index: modules/ml/src/em.cpp =================================================================== --- modules/ml/src/em.cpp (revision 7225) +++ modules/ml/src/em.cpp (working copy) @@ -141,8 +141,6 @@ CvFileNode* em_node = 0; CvFileNode* tmp_node = 0; CvSeq* seq = 0; - CvMat **tmp_covs = 0; - CvMat **tmp_cov_rotate_mats = 0; read_params( fs, node ); @@ -156,13 +154,10 @@ CV_CALL( inv_eigen_values = (CvMat*)cvReadByName( fs, em_node, "inv_eigen_values" )); // Size of all the following data - data_size = params.nclusters*2*sizeof(CvMat*); + data_size = params.nclusters*sizeof(CvMat*); - CV_CALL( tmp_covs = (CvMat**)cvAlloc( data_size )); - memset( tmp_covs, 0, data_size ); - - tmp_cov_rotate_mats = tmp_covs + params.nclusters; - + CV_CALL( covs = (CvMat**)cvAlloc( data_size )); + memset( covs, 0, data_size ); CV_CALL( tmp_node = cvGetFileNodeByName( fs, em_node, "covs" )); seq = tmp_node->data.seq; if( !CV_NODE_IS_SEQ(tmp_node->tag) || seq->total != params.nclusters) @@ -170,24 +165,23 @@ CV_CALL( cvStartReadSeq( seq, &reader, 0 )); for( int i = 0; i < params.nclusters; i++ ) { - CV_CALL( tmp_covs[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); + CV_CALL( covs[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); } + CV_CALL( cov_rotate_mats = (CvMat**)cvAlloc( data_size )); + memset( cov_rotate_mats, 0, data_size ); CV_CALL( tmp_node = cvGetFileNodeByName( fs, em_node, "cov_rotate_mats" )); seq = tmp_node->data.seq; if( !CV_NODE_IS_SEQ(tmp_node->tag) || seq->total != params.nclusters) - CV_ERROR( CV_StsParseError, "Missing or invalid sequence of rotated cov. matrices" ); + CV_ERROR( CV_StsParseError, "Missing or invalid sequence of covariance matrices" ); CV_CALL( cvStartReadSeq( seq, &reader, 0 )); for( int i = 0; i < params.nclusters; i++ ) { - CV_CALL( tmp_cov_rotate_mats[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); + CV_CALL( cov_rotate_mats[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); } - covs = tmp_covs; - cov_rotate_mats = tmp_cov_rotate_mats; - ok = true; __END__;