|
@@ -6,6 +6,7 @@ CBinaryData::CBinaryData()
|
|
|
{
|
|
|
}
|
|
|
CBinaryData::CBinaryData(const char* buf, int len, DATA_type type)
|
|
|
+ :m_buf(0),m_length(0)
|
|
|
{
|
|
|
if (len > 0)
|
|
|
{
|
|
@@ -15,6 +16,7 @@ CBinaryData::CBinaryData(const char* buf, int len, DATA_type type)
|
|
|
}
|
|
|
}
|
|
|
CBinaryData::CBinaryData(const CBinaryData& data)
|
|
|
+ :m_buf(0),m_length(0)
|
|
|
{
|
|
|
if (m_buf)
|
|
|
{
|
|
@@ -31,7 +33,7 @@ CBinaryData::CBinaryData(const CBinaryData& data)
|
|
|
}
|
|
|
CBinaryData::~CBinaryData()
|
|
|
{
|
|
|
- if (m_buf)
|
|
|
+ if (m_buf && m_length)
|
|
|
{
|
|
|
free(m_buf);
|
|
|
m_length = 0;
|
|
@@ -43,7 +45,7 @@ char* CBinaryData::Data()const {
|
|
|
int CBinaryData::Length()const {
|
|
|
return m_length;
|
|
|
}
|
|
|
-CBinaryData& CBinaryData::operator=(CBinaryData data)
|
|
|
+CBinaryData& CBinaryData::operator=(const CBinaryData& data)
|
|
|
{
|
|
|
if (m_buf)
|
|
|
{
|
|
@@ -206,6 +208,7 @@ void CLaser::thread_recv()
|
|
|
else
|
|
|
{
|
|
|
delete data;
|
|
|
+ data=0;
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -244,6 +247,8 @@ void CLaser::thread_toXYZ()
|
|
|
DATA_type type = eUnknow;
|
|
|
if (bPop || m_last_data.Length() != 0)
|
|
|
{
|
|
|
+ m_queue_laser_data.try_pop();
|
|
|
+
|
|
|
std::vector<CPoint3D> cloud;
|
|
|
if (bPop)
|
|
|
{
|
|
@@ -259,7 +264,12 @@ void CLaser::thread_toXYZ()
|
|
|
}
|
|
|
if (type == eUnknow)
|
|
|
{
|
|
|
- delete pData;
|
|
|
+ if(pData)
|
|
|
+ {
|
|
|
+
|
|
|
+ delete pData;
|
|
|
+ pData=0;
|
|
|
+ }
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -298,8 +308,8 @@ void CLaser::thread_toXYZ()
|
|
|
m_statu = eLaser_ready;
|
|
|
}
|
|
|
|
|
|
- m_queue_laser_data.try_pop();
|
|
|
delete pData;
|
|
|
+ pData=0;
|
|
|
}
|
|
|
|
|
|
}
|