# Revision history [back]

### Copying an SVM

I try the following code in C++ using OpenCV 2.42 and it fails when attempting to copy the svm

include <opencv2/opencv.hpp>
using namespace cv;

int main(int argc, char *argv[]){

Mat trainData(100, 3, CV_32F);
randu(trainData, 0.0f, 10.f);

Mat classes = Mat::zeros(100, 1, CV_32F);
for(int i = 50; i < classes.rows; i++)
classes.at<float>(i) = 1.0f;

Mat sample = Mat::ones(1, 3, CV_32F);

SVM svm;
svm.train_auto(trainData, classes, Mat(), Mat(), SVMParams(), 2);

SVM svm2 = SVM(svm);
}


and gives the message (VS2010 Windows XP)

OpenCV Error: Assertion failed (udata < (uchar*)ptr && ((uchar*)ptr - udata) <=
(ptrdiff_t)(sizeof(void*)+16)) in unknown function, file ..\..\..\src\opencv\mod
ules\core\src\alloc.cpp, line 78


Is this a bug, or is there something I am missing about copying an SVM? I expected it to copy the decision function, support vectors, and other parameters, but something seems to be going wrong. I had a look at the source in ml.hpp and it doesn't seem to define a copy constructor.