Bläddra i källkod

fix correct folder naming scheme.

Kim Kulling 7 år sedan
förälder
incheckning
c23c63e821
2 ändrade filer med 19 tillägg och 5 borttagningar
  1. 1 1
      code/D3MFExporter.cpp
  2. 18 4
      code/D3MFOpcPackage.cpp

+ 1 - 1
code/D3MFExporter.cpp

@@ -191,7 +191,7 @@ bool D3MFExporter::export3DModel() {
     info->type = XmlTag::PACKAGE_START_PART_RELATIONSHIP_TYPE;
     info->type = XmlTag::PACKAGE_START_PART_RELATIONSHIP_TYPE;
     mRelations.push_back( info );
     mRelations.push_back( info );
 
 
-    writeModelToArchive( "/3D", "3DModel.model" );
+    writeModelToArchive( "3D", "3DModel.model" );
     mModelOutput.flush();
     mModelOutput.flush();
 
 
     return true;
     return true;

+ 18 - 4
code/D3MFOpcPackage.cpp

@@ -413,14 +413,22 @@ public:
         // empty
         // empty
     }
     }
 
 
+    bool validateRels( OpcPackageRelationshipPtr &relPtr ) {
+        if ( relPtr->id.empty() || relPtr->type.empty() || relPtr->target.empty() ) {
+            return false;
+        }
+        return true;
+    }
+
     void ParseChildNode(XmlReader* xmlReader) {        
     void ParseChildNode(XmlReader* xmlReader) {        
         OpcPackageRelationshipPtr relPtr(new OpcPackageRelationship());
         OpcPackageRelationshipPtr relPtr(new OpcPackageRelationship());
 
 
         relPtr->id = xmlReader->getAttributeValueSafe(XmlTag::RELS_ATTRIB_ID.c_str());
         relPtr->id = xmlReader->getAttributeValueSafe(XmlTag::RELS_ATTRIB_ID.c_str());
         relPtr->type = xmlReader->getAttributeValueSafe(XmlTag::RELS_ATTRIB_TYPE.c_str());
         relPtr->type = xmlReader->getAttributeValueSafe(XmlTag::RELS_ATTRIB_TYPE.c_str());
         relPtr->target = xmlReader->getAttributeValueSafe(XmlTag::RELS_ATTRIB_TARGET.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<OpcPackageRelationshipPtr> m_relationShips;
     std::vector<OpcPackageRelationshipPtr> m_relationShips;
@@ -450,13 +458,19 @@ D3MFOpcPackage::D3MFOpcPackage(IOSystem* pIOHandler, const std::string& rFile)
             std::string rootFile = ReadPackageRootRelationship(fileStream);
             std::string rootFile = ReadPackageRootRelationship(fileStream);
             if ( rootFile.size() > 0 && rootFile[ 0 ] == '/' ) {
             if ( rootFile.size() > 0 && rootFile[ 0 ] == '/' ) {
                 rootFile = rootFile.substr( 1 );
                 rootFile = rootFile.substr( 1 );
+                if ( rootFile[ 0 ] == '/' ) {
+                    // deal with zipbug
+                    rootFile = rootFile.substr( 1 );
+                }
             }
             }
 
 
             DefaultLogger::get()->debug(rootFile);
             DefaultLogger::get()->debug(rootFile);
 
 
             mRootStream = mZipArchive->Open(rootFile.c_str());
             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();
         //    const size_t size = zipArchive->FileSize();
         //    m_Data.resize( size );
         //    m_Data.resize( size );