Index: /OpenSceneGraph/trunk/src/osgPlugins/txp/ReaderWriterTXP.h
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/txp/ReaderWriterTXP.h (revision 11037)
+++ /OpenSceneGraph/trunk/src/osgPlugins/txp/ReaderWriterTXP.h (revision 11122)
@@ -82,5 +82,5 @@
     ReadResult local_readNode(const std::string& file, const osgDB::ReaderWriter::Options* options);
 
-    TXPArchive *getArchive(int id, const std::string&);
+    osg::ref_ptr< TXPArchive > getArchive(int id, const std::string&);
  
     osg::Node* getTileContent(const TXPArchive::TileInfo &info, int x, int y, int lod, TXPArchive* archive,  std::vector<TXPArchive::TileLocationInfo>& childrenLoc);
Index: /OpenSceneGraph/trunk/src/osgPlugins/txp/TXPNode.h
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/txp/TXPNode.h (revision 8437)
+++ /OpenSceneGraph/trunk/src/osgPlugins/txp/TXPNode.h (revision 11122)
@@ -72,5 +72,5 @@
     bool loadArchive(TXPArchive*);
     
-    TXPArchive* getArchive();
+    TXPArchive* getArchive() { return _archive.get(); }
 
     void setArchive( TXPArchive* archive )
Index: /OpenSceneGraph/trunk/src/osgPlugins/txp/ReaderWriterTXP.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/txp/ReaderWriterTXP.cpp (revision 11037)
+++ /OpenSceneGraph/trunk/src/osgPlugins/txp/ReaderWriterTXP.cpp (revision 11122)
@@ -59,5 +59,5 @@
         //the txpNode.
         int id = ++_archiveId;
-        TXPArchive* archive = getArchive(id,osgDB::getFilePath(fileName));
+        osg::ref_ptr< TXPArchive > archive = getArchive(id,osgDB::getFilePath(fileName));
 
         if (archive != NULL)
@@ -70,6 +70,6 @@
             }
 
-            txpNode->loadArchive(archive);
-            
+            txpNode->loadArchive(archive.get());
+
             return txpNode.get();
         }
@@ -86,5 +86,5 @@
         unsigned int id;
         sscanf(name.c_str(),"tile%d_%dx%d_%u",&lod,&x,&y,&id);
-        TXPArchive* archive = getArchive(id,osgDB::getFilePath(file));
+        osg::ref_ptr< TXPArchive > archive = getArchive(id,osgDB::getFilePath(file));
 
         // The way this is done a 'tile' should only be created for lod 0 only,
@@ -107,5 +107,5 @@
 
         std::vector<TXPArchive::TileLocationInfo> childrenLoc;
-        osg::ref_ptr<osg::Node> tileContent = getTileContent(info,x,y,lod,archive, childrenLoc);
+        osg::ref_ptr<osg::Node> tileContent = getTileContent(info,x,y,lod,archive.get(), childrenLoc);
         
         tileContent->setName("TileContent");
@@ -199,5 +199,5 @@
         unsigned int id;
         sscanf(name.c_str(),"subtiles%d_%dx%d_%u",&lod,&x,&y,&id);
-        TXPArchive* archive = getArchive(id,osgDB::getFilePath(file));
+        osg::ref_ptr< TXPArchive > archive = getArchive(id,osgDB::getFilePath(file));
 
         int majorVersion, minorVersion;
@@ -259,5 +259,5 @@
                     continue;
 
-                osg::ref_ptr<osg::Node> tileContent = getTileContent(info, loc, archive, childrenChildLoc);
+                osg::ref_ptr<osg::Node> tileContent = getTileContent(info, loc, archive.get(), childrenChildLoc);
 
                 tileContent->setName("TileContent");
@@ -361,5 +361,5 @@
                     continue;
 
-                    osg::ref_ptr<osg::Node> tileContent = getTileContent(info,tileX,tileY,tileLOD,archive, childrenLoc);
+                    osg::ref_ptr<osg::Node> tileContent = getTileContent(info,tileX,tileY,tileLOD,archive.get(), childrenLoc);
 
                     tileContent->setName("TileContent");
@@ -564,7 +564,7 @@
 }
 
-TXPArchive *ReaderWriterTXP::getArchive(int id, const std::string& dir)
-{
-    TXPArchive* archive = NULL;
+osg::ref_ptr< TXPArchive > ReaderWriterTXP::getArchive(int id, const std::string& dir)
+{
+    osg::ref_ptr< TXPArchive > archive = NULL;
 
     std::map< int,osg::ref_ptr<TXPArchive> >::iterator iter = _archives.find(id);
Index: /OpenSceneGraph/trunk/src/osgPlugins/txp/TXPParser.h
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/txp/TXPParser.h (revision 5309)
+++ /OpenSceneGraph/trunk/src/osgPlugins/txp/TXPParser.h (revision 11122)
@@ -80,9 +80,9 @@
 
     GeodeGroup() : osg::Group(), _geode(NULL)
-	{}
+    {}
     
     GeodeGroup(const GeodeGroup& gg,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY):
     osg::Group(gg, copyop), _geode(gg._geode)
-	{}
+    {}
     
     META_Node(txp, GeodeGroup);
@@ -118,10 +118,10 @@
     }
 
-	// Gets the archive
-	inline TXPArchive* getArchive()
-	{
-		return _archive;
-	}
-    
+    // Gets the archive
+    inline TXPArchive* getArchive()
+    {
+        return _archive.get();
+    }
+
     // Scene parser
     osg::Group *parseScene(
@@ -130,5 +130,5 @@
         std::map<int,osg::ref_ptr<osg::Node> > &models,
         double realMinRange, double realMaxRange, double usedMaxRange);
-        
+
     // Returns the current Top Group
     inline osg::Group* getCurrTop()
@@ -149,9 +149,9 @@
     }
 
-	// Ensure material is loaded
-	inline void loadMaterial( int ix )
-	{
-		_archive->loadMaterial( ix );
-	}
+    // Ensure material is loaded
+    inline void loadMaterial( int ix )
+    {
+        _archive->loadMaterial( ix );
+    }
     
     // New to TerraPage 2.0 - local materials
@@ -270,13 +270,13 @@
 
     // gets tile center, from the top lod node
-	inline const osg::Vec3 getTileCenter() const
-	{
-		return _tileCenter;
-	}
-
-	inline void setCurrentNode( osg::Node* node )
-	{
-		_currentNode = node;
-	}
+    inline const osg::Vec3 getTileCenter() const
+    {
+        return _tileCenter;
+    }
+
+    inline void setCurrentNode( osg::Node* node )
+    {
+        _currentNode = node;
+    }
 
    // After parsing this will return the number of trpgChildRef node found.
@@ -303,5 +303,5 @@
     
     // THE archive
-    TXPArchive    *_archive;
+    osg::ref_ptr< TXPArchive > _archive;
     
     // Current parent
@@ -324,6 +324,6 @@
     
     // Materials
-	typedef std::map<int,osg::ref_ptr<osg::StateSet> >* MaterialMapType;
-	MaterialMapType _materialMap;
+    typedef std::map<int,osg::ref_ptr<osg::StateSet> >* MaterialMapType;
+    MaterialMapType _materialMap;
     
     // Local materials
@@ -331,5 +331,5 @@
     
     // Model list
-	typedef std::map<int,osg::ref_ptr<osg::Node> > OSGModelsMapType;
+    typedef std::map<int,osg::ref_ptr<osg::Node> > OSGModelsMapType;
     OSGModelsMapType*      _models;
 
@@ -384,5 +384,5 @@
 
     geomRead(TXPParser *in_parse) : _parse(in_parse)
-	{}
+    {}
     void *Parse(trpgToken tok,trpgReadBuffer &buf);
 protected:
@@ -396,5 +396,5 @@
 public:
     groupRead(TXPParser *in_parse) : _parse(in_parse)
-	{}
+    {}
     void *Parse(trpgToken tok,trpgReadBuffer &buf);
 protected:
@@ -407,5 +407,5 @@
 public:
     attachRead(TXPParser *in_parse) : _parse(in_parse)
-	{}
+    {}
     void *Parse(trpgToken tok,trpgReadBuffer &buf);
 protected:
@@ -456,5 +456,5 @@
 public:
     lodRead(TXPParser *in_parse) : _parse(in_parse)
-	{}
+    {}
     void *Parse(trpgToken tok,trpgReadBuffer &buf);
 protected:
@@ -467,5 +467,5 @@
 public:
     tileHeaderRead(TXPParser *in_parse) : _parse(in_parse)
-	{}
+    {}
     void *Parse(trpgToken tok,trpgReadBuffer &buf);
 protected:
@@ -479,5 +479,5 @@
 public:
     modelRefRead(TXPParser *in_parse) : _parse(in_parse)
-	{}
+    {}
     void *Parse(trpgToken tok,trpgReadBuffer &buf);
 protected:
@@ -490,5 +490,5 @@
 public:
     billboardRead(TXPParser *in_parse) : _parse(in_parse)
-	{}
+    {}
     void *Parse(trpgToken tok,trpgReadBuffer &buf);
 protected:
@@ -501,5 +501,5 @@
 public:
     lightRead(TXPParser *in_parse) : _parse(in_parse)
-	{}
+    {}
     void *Parse(trpgToken tok,trpgReadBuffer &buf);
 protected:
@@ -512,5 +512,5 @@
 public:
     layerRead(TXPParser *in_parse)  : _parse(in_parse)
-	{}
+    {}
     void *Parse(trpgToken tok,trpgReadBuffer &buf);
 protected:
@@ -523,5 +523,5 @@
 public:
     labelRead(TXPParser *in_parse)  : _parse(in_parse)
-	{}
+    {}
     void *Parse(trpgToken tok,trpgReadBuffer &buf);
 protected:
Index: /OpenSceneGraph/trunk/src/osgPlugins/txp/TXPNode.cpp
===================================================================
--- /OpenSceneGraph/trunk/src/osgPlugins/txp/TXPNode.cpp (revision 11037)
+++ /OpenSceneGraph/trunk/src/osgPlugins/txp/TXPNode.cpp (revision 11122)
@@ -97,9 +97,4 @@
       }
    }
-}
-
-TXPArchive* TXPNode::getArchive()
-{
-    return _archive.get();
 }
 
