Improved code

Fixed Directory being copyable
Fixed ByteArray and String self-assignation
Made it clear Clock is copyable


Former-commit-id: 36702d8a389abe6d3faa1e283d9a20f0326041a6
This commit is contained in:
Lynix
2014-07-23 11:57:04 +02:00
parent 221e2583ac
commit 8b34e21e2f
4 changed files with 20 additions and 29 deletions

View File

@@ -404,11 +404,14 @@ nzUInt8 NzByteArray::operator[](unsigned int pos) const
NzByteArray& NzByteArray::operator=(const NzByteArray& array)
{
ReleaseArray();
if (this != &array)
{
ReleaseArray();
m_sharedArray = array.m_sharedArray;
if (m_sharedArray != &emptyArray)
m_sharedArray->refCount++;
m_sharedArray = array.m_sharedArray;
if (m_sharedArray != &emptyArray)
m_sharedArray->refCount++;
}
return *this;
}

View File

@@ -2785,35 +2785,19 @@ NzString& NzString::Set(const char* string, unsigned int length)
NzString& NzString::Set(const std::string& string)
{
if (string.size() > 0)
{
if (m_sharedString->capacity >= string.size())
EnsureOwnership(true);
else
{
ReleaseString();
m_sharedString = new SharedString;
m_sharedString->capacity = string.size();
m_sharedString->string = new char[string.size()+1];
}
m_sharedString->size = string.size();
std::memcpy(m_sharedString->string, string.c_str(), string.size()+1);
}
else
ReleaseString();
return *this;
return Set(string.data(), string.size());
}
NzString& NzString::Set(const NzString& string)
{
ReleaseString();
if (this != &string)
{
ReleaseString();
m_sharedString = string.m_sharedString;
if (m_sharedString != &emptyString)
m_sharedString->refCount++;
m_sharedString = string.m_sharedString;
if (m_sharedString != &emptyString)
m_sharedString->refCount++;
}
return *this;
}