Code cleanup to pass gcc -Weffc++ warnings
diff --git a/Makefile b/Makefile
index eba6fef..4532fa1 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,10 @@
+# Extended C++ warning policy
+CXXFLAGS += -Werror -Wall -Wextra -Wshadow -Wpedantic -Wformat-nonliteral \
+ -Wformat-security -Wswitch-default -Wuninitialized -Wundef \
+ -Wpointer-arith -Woverloaded-virtual -Wctor-dtor-privacy \
+ -Wnon-virtual-dtor -Woverloaded-virtual -Wsign-promo \
+ -Wno-unused-parameter -Weffc++
+
all: xmltest staticlib
rebuild: clean all
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index a8a4a20..8f0116b 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -741,6 +741,7 @@
XMLNode::XMLNode( XMLDocument* doc ) :
_document( doc ),
_parent( 0 ),
+ _value(),
_parseLineNum( 0 ),
_firstChild( 0 ), _lastChild( 0 ),
_prev( 0 ), _next( 0 ),
@@ -1993,9 +1994,16 @@
_processEntities( processEntities ),
_errorID(XML_SUCCESS),
_whitespaceMode( whitespaceMode ),
+ _errorStr1(),
+ _errorStr2(),
_errorLineNum( 0 ),
_charBuffer( 0 ),
- _parseCurLineNum( 0 )
+ _parseCurLineNum( 0 ),
+ _unlinked(),
+ _elementPool(),
+ _attributePool(),
+ _textPool(),
+ _commentPool()
{
// avoid VC++ C4355 warning about 'this' in initializer list (C4355 is off by default in VS2012+)
_document = this;
@@ -2367,12 +2375,14 @@
XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) :
_elementJustOpened( false ),
+ _stack(),
_firstElement( true ),
_fp( file ),
_depth( depth ),
_textDepth( -1 ),
_processEntities( true ),
- _compactMode( compact )
+ _compactMode( compact ),
+ _buffer()
{
for( int i=0; i<ENTITY_RANGE; ++i ) {
_entityFlag[i] = false;
diff --git a/tinyxml2.h b/tinyxml2.h
index 7b5bb0e..9774118 100755
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -192,10 +192,11 @@
class DynArray
{
public:
- DynArray() {
- _mem = _pool;
- _allocated = INITIAL_SIZE;
- _size = 0;
+ DynArray() :
+ _mem( _pool ),
+ _allocated( INITIAL_SIZE ),
+ _size( 0 )
+ {
}
~DynArray() {
@@ -333,7 +334,7 @@
class MemPoolT : public MemPool
{
public:
- MemPoolT() : _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {}
+ MemPoolT() : _blockPtrs(), _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {}
~MemPoolT() {
Clear();
}
@@ -1211,7 +1212,7 @@
private:
enum { BUF_SIZE = 200 };
- XMLAttribute() : _parseLineNum( 0 ), _next( 0 ), _memPool( 0 ) {}
+ XMLAttribute() : _name(), _value(),_parseLineNum( 0 ), _next( 0 ), _memPool( 0 ) {}
virtual ~XMLAttribute() {}
XMLAttribute( const XMLAttribute& ); // not supported
@@ -1947,16 +1948,13 @@
{
public:
/// Create a handle from any node (at any depth of the tree.) This can be a null pointer.
- XMLHandle( XMLNode* node ) {
- _node = node;
+ XMLHandle( XMLNode* node ) : _node( node ) {
}
/// Create a handle from a node.
- XMLHandle( XMLNode& node ) {
- _node = &node;
+ XMLHandle( XMLNode& node ) : _node( &node ) {
}
/// Copy constructor
- XMLHandle( const XMLHandle& ref ) {
- _node = ref._node;
+ XMLHandle( const XMLHandle& ref ) : _node( ref._node ) {
}
/// Assignment
XMLHandle& operator=( const XMLHandle& ref ) {
@@ -2030,14 +2028,11 @@
class TINYXML2_LIB XMLConstHandle
{
public:
- XMLConstHandle( const XMLNode* node ) {
- _node = node;
+ XMLConstHandle( const XMLNode* node ) : _node( node ) {
}
- XMLConstHandle( const XMLNode& node ) {
- _node = &node;
+ XMLConstHandle( const XMLNode& node ) : _node( &node ) {
}
- XMLConstHandle( const XMLConstHandle& ref ) {
- _node = ref._node;
+ XMLConstHandle( const XMLConstHandle& ref ) : _node( ref._node ) {
}
XMLConstHandle& operator=( const XMLConstHandle& ref ) {
@@ -2252,6 +2247,10 @@
bool _restrictedEntityFlag[ENTITY_RANGE];
DynArray< char, 20 > _buffer;
+
+ // Prohibit cloning, intentionally not implemented
+ XMLPrinter( const XMLPrinter& );
+ XMLPrinter& operator=( const XMLPrinter& );
};
diff --git a/xmltest.cpp b/xmltest.cpp
index 59724f7..1c07faa 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -2017,6 +2017,8 @@
{
struct TestUtil: XMLVisitor
{
+ TestUtil() : str() {}
+
void TestParseError(const char *testString, const char *docStr, XMLError expected_error, int expectedLine)
{
XMLDocument doc;