summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2018-03-25 16:39:03 +0200
committerDavid Tardon <dtardon@redhat.com>2018-03-25 16:39:10 +0200
commit8a3b290280fe07a990d7a84b21a0cdc5f28d1c2f (patch)
treeb120b9bd9b825dcb733b7c7adb4eb393c4a0f753
parent160825ec6e25b3de6086479f856d14a6dcaaa60a (diff)
use unique_ptr to hold foreign data
Change-Id: I605e3fc76a7f909566450ccff33649745f16f200
-rw-r--r--src/lib/VDXParser.cpp10
-rw-r--r--src/lib/VSD5Parser.cpp2
-rw-r--r--src/lib/VSDParser.cpp10
-rw-r--r--src/lib/VSDStencils.cpp8
-rw-r--r--src/lib/VSDStencils.h2
-rw-r--r--src/lib/VSDXMLParserBase.cpp4
-rw-r--r--src/lib/VSDXParser.cpp10
7 files changed, 21 insertions, 25 deletions
diff --git a/src/lib/VDXParser.cpp b/src/lib/VDXParser.cpp
index 72f78b9..a81e5bc 100644
--- a/src/lib/VDXParser.cpp
+++ b/src/lib/VDXParser.cpp
@@ -940,7 +940,7 @@ void libvisio::VDXParser::getBinaryData(xmlTextReaderPtr reader)
if (data)
{
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
m_shape.m_foreign->data.clear();
m_shape.m_foreign->data.appendBase64Data(librevenge::RVNGString((const char *)data));
}
@@ -967,7 +967,7 @@ void libvisio::VDXParser::readForeignInfo(xmlTextReaderPtr reader)
if (XML_READER_TYPE_ELEMENT == tokenType)
{
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
ret = readDoubleData(m_shape.m_foreign->offsetX, reader);
}
break;
@@ -975,7 +975,7 @@ void libvisio::VDXParser::readForeignInfo(xmlTextReaderPtr reader)
if (XML_READER_TYPE_ELEMENT == tokenType)
{
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
ret = readDoubleData(m_shape.m_foreign->offsetY, reader);
}
break;
@@ -983,7 +983,7 @@ void libvisio::VDXParser::readForeignInfo(xmlTextReaderPtr reader)
if (XML_READER_TYPE_ELEMENT == tokenType)
{
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
ret = readDoubleData(m_shape.m_foreign->width, reader);
}
break;
@@ -991,7 +991,7 @@ void libvisio::VDXParser::readForeignInfo(xmlTextReaderPtr reader)
if (XML_READER_TYPE_ELEMENT == tokenType)
{
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
ret = readDoubleData(m_shape.m_foreign->height, reader);
}
break;
diff --git a/src/lib/VSD5Parser.cpp b/src/lib/VSD5Parser.cpp
index 50b3324..fe841cc 100644
--- a/src/lib/VSD5Parser.cpp
+++ b/src/lib/VSD5Parser.cpp
@@ -406,7 +406,7 @@ void libvisio::VSD5Parser::readShape(librevenge::RVNGInputStream *input)
if (tmpShape)
{
if (tmpShape->m_foreign)
- m_shape.m_foreign = new ForeignData(*(tmpShape->m_foreign));
+ m_shape.m_foreign = make_unique<ForeignData>(*(tmpShape->m_foreign));
m_shape.m_text = tmpShape->m_text;
m_shape.m_textFormat = tmpShape->m_textFormat;
}
diff --git a/src/lib/VSDParser.cpp b/src/lib/VSDParser.cpp
index 61e5f38..fabb9a3 100644
--- a/src/lib/VSDParser.cpp
+++ b/src/lib/VSDParser.cpp
@@ -343,7 +343,7 @@ void libvisio::VSDParser::handleStream(const Pointer &ptr, unsigned idx, unsigne
break;
case VSD_OLE_LIST:
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
m_shape.m_foreign->dataId = idx;
break;
default:
@@ -770,7 +770,7 @@ void libvisio::VSDParser::readForeignData(librevenge::RVNGInputStream *input)
librevenge::RVNGBinaryData binaryData(buffer, tmpBytesRead);
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
m_shape.m_foreign->dataId = m_header.id;
m_shape.m_foreign->data = binaryData;
}
@@ -788,7 +788,7 @@ void libvisio::VSDParser::readOLEData(librevenge::RVNGInputStream *input)
librevenge::RVNGBinaryData oleData(buffer, tmpBytesRead);
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
// Append data instead of setting it - allows multi-stream OLE objects
m_shape.m_foreign->data.append(oleData);
@@ -1236,7 +1236,7 @@ void libvisio::VSDParser::readForeignDataType(librevenge::RVNGInputStream *input
unsigned foreignFormat = readU32(input);
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
m_shape.m_foreign->typeId = m_header.id;
m_shape.m_foreign->type = foreignType;
m_shape.m_foreign->format = foreignFormat;
@@ -1314,7 +1314,7 @@ void libvisio::VSDParser::readShape(librevenge::RVNGInputStream *input)
if (tmpShape)
{
if (tmpShape->m_foreign)
- m_shape.m_foreign = new ForeignData(*(tmpShape->m_foreign));
+ m_shape.m_foreign = make_unique<ForeignData>(*(tmpShape->m_foreign));
m_shape.m_xform = tmpShape->m_xform;
if (tmpShape->m_txtxform)
m_shape.m_txtxform = new XForm(*(tmpShape->m_txtxform));
diff --git a/src/lib/VSDStencils.cpp b/src/lib/VSDStencils.cpp
index 2243c53..ba7f9be 100644
--- a/src/lib/VSDStencils.cpp
+++ b/src/lib/VSDStencils.cpp
@@ -11,7 +11,7 @@
#include "libvisio_utils.h"
libvisio::VSDShape::VSDShape()
- : m_geometries(), m_shapeList(), m_fields(), m_foreign(nullptr), m_parent(0), m_masterPage(MINUS_ONE),
+ : m_geometries(), m_shapeList(), m_fields(), m_foreign(), m_parent(0), m_masterPage(MINUS_ONE),
m_masterShape(MINUS_ONE), m_shapeId(MINUS_ONE), m_lineStyleId(MINUS_ONE), m_fillStyleId(MINUS_ONE),
m_textStyleId(MINUS_ONE), m_lineStyle(), m_fillStyle(), m_textBlockStyle(), m_charStyle(),
m_charList(), m_paraStyle(), m_paraList(), m_tabSets(), m_text(), m_names(),
@@ -47,9 +47,7 @@ libvisio::VSDShape &libvisio::VSDShape::operator=(const libvisio::VSDShape &shap
m_geometries = shape.m_geometries;
m_shapeList = shape.m_shapeList;
m_fields = shape.m_fields;
- if (m_foreign)
- delete m_foreign;
- m_foreign = shape.m_foreign ? new ForeignData(*(shape.m_foreign)) : nullptr;
+ m_foreign.reset(shape.m_foreign ? new ForeignData(*(shape.m_foreign)) : nullptr);
m_parent = shape.m_parent;
m_masterPage = shape.m_masterPage;
m_masterShape = shape.m_masterShape;
@@ -83,8 +81,6 @@ libvisio::VSDShape &libvisio::VSDShape::operator=(const libvisio::VSDShape &shap
void libvisio::VSDShape::clear()
{
- if (m_foreign)
- delete m_foreign;
m_foreign = nullptr;
if (m_txtxform)
delete m_txtxform;
diff --git a/src/lib/VSDStencils.h b/src/lib/VSDStencils.h
index 5beedf9..7be7063 100644
--- a/src/lib/VSDStencils.h
+++ b/src/lib/VSDStencils.h
@@ -36,7 +36,7 @@ public:
std::map<unsigned, VSDGeometryList> m_geometries;
VSDShapeList m_shapeList;
VSDFieldList m_fields;
- ForeignData *m_foreign;
+ std::unique_ptr<ForeignData> m_foreign;
unsigned m_parent, m_masterPage, m_masterShape, m_shapeId;
unsigned m_lineStyleId, m_fillStyleId, m_textStyleId;
VSDOptionalLineStyle m_lineStyle;
diff --git a/src/lib/VSDXMLParserBase.cpp b/src/lib/VSDXMLParserBase.cpp
index e1d9d0d..48d2741 100644
--- a/src/lib/VSDXMLParserBase.cpp
+++ b/src/lib/VSDXMLParserBase.cpp
@@ -966,7 +966,7 @@ void libvisio::VSDXMLParserBase::readShape(xmlTextReaderPtr reader)
if (tmpShape)
{
if (tmpShape->m_foreign)
- m_shape.m_foreign = new ForeignData(*(tmpShape->m_foreign));
+ m_shape.m_foreign = make_unique<ForeignData>(*(tmpShape->m_foreign));
m_shape.m_xform = tmpShape->m_xform;
if (tmpShape->m_txtxform)
m_shape.m_txtxform = new XForm(*(tmpShape->m_txtxform));
@@ -1707,7 +1707,7 @@ void libvisio::VSDXMLParserBase::readForeignData(xmlTextReaderPtr reader)
{
VSD_DEBUG_MSG(("VSDXMLParser::readForeignData\n"));
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
const shared_ptr<xmlChar> foreignTypeString(xmlTextReaderGetAttribute(reader, BAD_CAST("ForeignType")), xmlFree);
if (foreignTypeString)
diff --git a/src/lib/VSDXParser.cpp b/src/lib/VSDXParser.cpp
index e6385d8..e2c8087 100644
--- a/src/lib/VSDXParser.cpp
+++ b/src/lib/VSDXParser.cpp
@@ -1098,7 +1098,7 @@ void libvisio::VSDXParser::readShapeProperties(xmlTextReaderPtr reader)
if (XML_READER_TYPE_ELEMENT == tokenType)
{
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
ret = readDoubleData(m_shape.m_foreign->offsetX, reader);
}
break;
@@ -1106,7 +1106,7 @@ void libvisio::VSDXParser::readShapeProperties(xmlTextReaderPtr reader)
if (XML_READER_TYPE_ELEMENT == tokenType)
{
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
ret = readDoubleData(m_shape.m_foreign->offsetY, reader);
}
break;
@@ -1114,7 +1114,7 @@ void libvisio::VSDXParser::readShapeProperties(xmlTextReaderPtr reader)
if (XML_READER_TYPE_ELEMENT == tokenType)
{
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
ret = readDoubleData(m_shape.m_foreign->width, reader);
}
break;
@@ -1122,7 +1122,7 @@ void libvisio::VSDXParser::readShapeProperties(xmlTextReaderPtr reader)
if (XML_READER_TYPE_ELEMENT == tokenType)
{
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
ret = readDoubleData(m_shape.m_foreign->height, reader);
}
break;
@@ -1469,7 +1469,7 @@ void libvisio::VSDXParser::getBinaryData(xmlTextReaderPtr reader)
}
}
if (!m_shape.m_foreign)
- m_shape.m_foreign = new ForeignData();
+ m_shape.m_foreign = make_unique<ForeignData>();
m_shape.m_foreign->data = m_currentBinaryData;
}