openddl-parser: latest greatest with fixes for invalid reference information.

Signed-off-by: Kim Kulling <kim.kulling@googlemail.com>
This commit is contained in:
Kim Kulling
2015-03-17 14:25:15 +01:00
parent 7d7ccfd630
commit 0d5a2ce4c1
3 changed files with 23 additions and 6 deletions

View File

@@ -44,6 +44,18 @@ static void releaseDataType( T *ptr ) {
}
}
static void releaseReferencedNames( Reference *ref ) {
if( ddl_nullptr == ref ) {
return;
}
if( ref->m_referencedName ) {
for( size_t i = 0; i < ref->m_numRefs; i++ ) {
delete ref->m_referencedName;
}
}
}
DDLNode::DDLNode( const std::string &type, const std::string &name, size_t idx, DDLNode *parent )
: m_type( type )
, m_name( name )
@@ -51,9 +63,9 @@ DDLNode::DDLNode( const std::string &type, const std::string &name, size_t idx,
, m_children()
, m_properties( ddl_nullptr )
, m_value( ddl_nullptr )
, m_idx( idx )
, m_dtArrayList( ddl_nullptr )
, m_references( ddl_nullptr ) {
, m_references( ddl_nullptr )
, m_idx( idx ) {
if( m_parent ) {
m_parent->m_children.push_back( this );
}
@@ -62,6 +74,7 @@ DDLNode::DDLNode( const std::string &type, const std::string &name, size_t idx,
DDLNode::~DDLNode() {
releaseDataType<Property>( m_properties );
releaseDataType<Value>( m_value );
releaseReferencedNames( m_references );
delete m_dtArrayList;
m_dtArrayList = ddl_nullptr;