From c23c63e82119ecbead5da2cb86e8d5bb3d686aa1 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Wed, 6 Dec 2017 22:15:34 +0100 Subject: [PATCH] fix correct folder naming scheme. --- code/D3MFExporter.cpp | 2 +- code/D3MFOpcPackage.cpp | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/code/D3MFExporter.cpp b/code/D3MFExporter.cpp index 4fb13ca7b..0320dac21 100644 --- a/code/D3MFExporter.cpp +++ b/code/D3MFExporter.cpp @@ -191,7 +191,7 @@ bool D3MFExporter::export3DModel() { info->type = XmlTag::PACKAGE_START_PART_RELATIONSHIP_TYPE; mRelations.push_back( info ); - writeModelToArchive( "/3D", "3DModel.model" ); + writeModelToArchive( "3D", "3DModel.model" ); mModelOutput.flush(); return true; diff --git a/code/D3MFOpcPackage.cpp b/code/D3MFOpcPackage.cpp index 20d4acaf6..49143fee7 100644 --- a/code/D3MFOpcPackage.cpp +++ b/code/D3MFOpcPackage.cpp @@ -413,14 +413,22 @@ public: // empty } + bool validateRels( OpcPackageRelationshipPtr &relPtr ) { + if ( relPtr->id.empty() || relPtr->type.empty() || relPtr->target.empty() ) { + return false; + } + return true; + } + void ParseChildNode(XmlReader* xmlReader) { OpcPackageRelationshipPtr relPtr(new OpcPackageRelationship()); relPtr->id = xmlReader->getAttributeValueSafe(XmlTag::RELS_ATTRIB_ID.c_str()); relPtr->type = xmlReader->getAttributeValueSafe(XmlTag::RELS_ATTRIB_TYPE.c_str()); relPtr->target = xmlReader->getAttributeValueSafe(XmlTag::RELS_ATTRIB_TARGET.c_str()); - - m_relationShips.push_back(relPtr); + if ( validateRels( relPtr ) ) { + m_relationShips.push_back( relPtr ); + } } std::vector m_relationShips; @@ -450,13 +458,19 @@ D3MFOpcPackage::D3MFOpcPackage(IOSystem* pIOHandler, const std::string& rFile) std::string rootFile = ReadPackageRootRelationship(fileStream); if ( rootFile.size() > 0 && rootFile[ 0 ] == '/' ) { rootFile = rootFile.substr( 1 ); + if ( rootFile[ 0 ] == '/' ) { + // deal with zipbug + rootFile = rootFile.substr( 1 ); + } } DefaultLogger::get()->debug(rootFile); mRootStream = mZipArchive->Open(rootFile.c_str()); - - ai_assert(mRootStream != nullptr); + ai_assert( mRootStream != nullptr ); + if ( nullptr == mRootStream ) { + throw DeadlyExportError( "Cannot open rootfile in archive : " + rootFile ); + } // const size_t size = zipArchive->FileSize(); // m_Data.resize( size );