Text archives Help
- From: sparker@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [Manta] r1805 - trunk/Core/Persistent
- Date: Fri, 2 Nov 2007 17:05:51 -0600 (MDT)
Author: sparker
Date: Fri Nov 2 17:05:51 2007
New Revision: 1805
Modified:
trunk/Core/Persistent/Archive.cc
Log:
Fixed problem with static initialization order (I think)
Modified: trunk/Core/Persistent/Archive.cc
==============================================================================
--- trunk/Core/Persistent/Archive.cc (original)
+++ trunk/Core/Persistent/Archive.cc Fri Nov 2 17:05:51 2007
@@ -15,7 +15,7 @@
Archive* (*writeopener)(const std::string&);
};
-static ArchiveType archiveTypes[10];
+static ArchiveType* archiveTypes[10];
static int numArchiveTypes = 0;
bool Archive::registerArchiveType(const std::string& name,
@@ -25,9 +25,10 @@
int maxArchiveTypes = sizeof(archiveTypes)/sizeof(ArchiveType);
if(numArchiveTypes >= maxArchiveTypes)
throw InternalError("Maximum number of archive types exceeded",
__FILE__, __LINE__);
- archiveTypes[numArchiveTypes].name = name;
- archiveTypes[numArchiveTypes].readopener = readopener;
- archiveTypes[numArchiveTypes].writeopener = writeopener;
+ archiveTypes[numArchiveTypes] = new ArchiveType();
+ archiveTypes[numArchiveTypes]->name = name;
+ archiveTypes[numArchiveTypes]->readopener = readopener;
+ archiveTypes[numArchiveTypes]->writeopener = writeopener;
numArchiveTypes++;
return true;
}
@@ -35,7 +36,7 @@
Archive* Archive::openForReading(const std::string& filename)
{
for(int i=0;i<numArchiveTypes;i++){
- Archive* (*readopener)(const std::string&) = archiveTypes[i].readopener;
+ Archive* (*readopener)(const std::string&) = archiveTypes[i]->readopener;
if(readopener){
Archive* archive = (*readopener)(filename);
if(archive)
@@ -49,7 +50,7 @@
{
Archive* result = 0;
for(int i=0;i<numArchiveTypes;i++){
- Archive* (*writeopener)(const std::string&) =
archiveTypes[i].writeopener;
+ Archive* (*writeopener)(const std::string&) =
archiveTypes[i]->writeopener;
if(writeopener){
Archive* archive = (*writeopener)(filename);
if(archive){
- [Manta] r1805 - trunk/Core/Persistent, sparker, 11/02/2007
Archive powered by MHonArc 2.6.16.