]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/mapblock.cpp
Don't leak textures all over the place
[dragonfireclient.git] / src / mapblock.cpp
index c7c820d42e7cfc6fa80ab0e00767f7c8c53857b3..2ae6e9bd7279259461d07788100f6e593fd0c987 100644 (file)
@@ -56,7 +56,8 @@ MapBlock::MapBlock(Map *parent, v3s16 pos, IGameDef *gamedef, bool dummy):
                m_generated(false),
                m_timestamp(BLOCK_TIMESTAMP_UNDEFINED),
                m_disk_timestamp(BLOCK_TIMESTAMP_UNDEFINED),
-               m_usage_timer(0)
+               m_usage_timer(0),
+               m_refcount(0)
 {
        data = NULL;
        if(dummy == false)
@@ -612,8 +613,10 @@ void MapBlock::serialize(std::ostream &os, u8 version, bool disk)
        */
        if(disk)
        {
-               // Node timers
-               m_node_timers.serialize(os);
+               if(version <= 24){
+                       // Node timers
+                       m_node_timers.serialize(os, version);
+               }
 
                // Static objects
                m_static_objects.serialize(os);
@@ -623,6 +626,11 @@ void MapBlock::serialize(std::ostream &os, u8 version, bool disk)
 
                // Write block-specific node definition id mapping
                nimap.serialize(os);
+               
+               if(version >= 25){
+                       // Node timers
+                       m_node_timers.serialize(os, version);
+               }
        }
 }
 
@@ -696,10 +704,10 @@ void MapBlock::deSerialize(std::istream &is, u8 version, bool disk)
                        // Read unused zero
                        readU8(is);
                }
-               else if(version >= 24){
+               if(version == 24){
                        TRACESTREAM(<<"MapBlock::deSerialize "<<PP(getPos())
-                                       <<": Node timers"<<std::endl);
-                       m_node_timers.deSerialize(is);
+                                       <<": Node timers (ver==24)"<<std::endl);
+                       m_node_timers.deSerialize(is, version);
                }
 
                // Static objects
@@ -719,6 +727,12 @@ void MapBlock::deSerialize(std::istream &is, u8 version, bool disk)
                NameIdMapping nimap;
                nimap.deSerialize(is);
                correctBlockNodeIds(&nimap, data, m_gamedef);
+
+               if(version >= 25){
+                       TRACESTREAM(<<"MapBlock::deSerialize "<<PP(getPos())
+                                       <<": Node timers (ver>=25)"<<std::endl);
+                       m_node_timers.deSerialize(is, version);
+               }
        }
                
        TRACESTREAM(<<"MapBlock::deSerialize "<<PP(getPos())