Use std::copy instead of memcpy
Call operator= from copy constructor
Allocate memory only when needed, not one byte before
#include <msp/strings/format.h>
#include <msp/strings/lexicalcast.h>
#include <msp/strings/utils.h>
#include <msp/strings/format.h>
#include <msp/strings/lexicalcast.h>
#include <msp/strings/utils.h>
VertexFormat::VertexFormat(const VertexFormat &f):
data(0)
{
VertexFormat::VertexFormat(const VertexFormat &f):
data(0)
{
- if(f.data)
- {
- data = new unsigned char[(f.data[0]&~7)+8];
- memcpy(data, f.data, f.data[0]+1);
- }
}
VertexFormat &VertexFormat::operator=(const VertexFormat &f)
}
VertexFormat &VertexFormat::operator=(const VertexFormat &f)
if(f.data)
{
data = new unsigned char[(f.data[0]&~7)+8];
if(f.data)
{
data = new unsigned char[(f.data[0]&~7)+8];
- memcpy(data, f.data, f.data[0]+1);
+ copy(f.data, f.data+f.data[0]+1, data);
if(r.data)
{
const unsigned char n = ++r.data[0];
if(r.data)
{
const unsigned char n = ++r.data[0];
- unsigned char *newdt = new unsigned char[n+9];
- memcpy(newdt, r.data, n);
+ unsigned char *newdt = new unsigned char[n+8];
+ copy(r.data, r.data+n, newdt);
delete r.data;
r.data = newdt;
}
delete r.data;
r.data = newdt;
}