diff --git a/src/shogun/multiclass/tree/CARTree.cpp b/src/shogun/multiclass/tree/CARTree.cpp index 1b0f62361fb..cff85136c37 100644 --- a/src/shogun/multiclass/tree/CARTree.cpp +++ b/src/shogun/multiclass/tree/CARTree.cpp @@ -580,14 +580,14 @@ int32_t CCARTree::compute_best_attribute(const SGMatrix& mat, const S int32_t best_attribute=-1; float64_t best_threshold=0; - SGVector indices_mask; + SGVector indices_mask; SGVector count_indices(mat.num_rows); count_indices.zero(); SGVector dupes(num_vecs); dupes.range_fill(); if (m_pre_sort) { - indices_mask = SGVector(mat.num_rows); + indices_mask = SGVector(mat.num_rows); indices_mask.set_const(-1); for(int32_t j=0;j& mat, const S { SGVector feats(num_vecs); SGVector sorted_args(num_vecs); - SGVector temp_count_indices(count_indices.size()); - memcpy(temp_count_indices.vector, count_indices.vector, sizeof(int32_t)*count_indices.size()); if (m_pre_sort) { @@ -615,12 +613,13 @@ int32_t CCARTree::compute_best_attribute(const SGMatrix& mat, const S { if (indices_mask[sorted_indices[j]]>=0) { - while(temp_count_indices[sorted_indices[j]]>0) + int32_t count_index = count_indices[sorted_indices[j]]; + while(count_index>0) { feats[count]=temp_col[j]; sorted_args[count]=indices_mask[sorted_indices[j]]; ++count; - --temp_count_indices[sorted_indices[j]]; + --count_index; } if (count==num_vecs) break;